pnfs/blocklayout: set up layoutupdate_pages properly
We need to replace the __be32 with a void pointer to do proper arithmentics on the virtual addresses so that we can get the right page pointers. Reported-by: Dan Carpenter <dan.carpenter@oracle.com> Signed-off-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
This commit is contained in:
parent
29662fa646
commit
68596bd188
|
@ -558,14 +558,11 @@ ext_tree_prepare_commit(struct nfs4_layoutcommit_args *arg)
|
|||
arg->layoutupdate_len = ext_tree_layoutupdate_size(count);
|
||||
|
||||
if (unlikely(arg->layoutupdate_pages != &arg->layoutupdate_page)) {
|
||||
__be32 *p = start_p;
|
||||
void *p = start_p, *end = p + arg->layoutupdate_len;
|
||||
int i = 0;
|
||||
|
||||
for (p = start_p;
|
||||
p < start_p + arg->layoutupdate_len;
|
||||
p += PAGE_SIZE) {
|
||||
for ( ; p < end; p += PAGE_SIZE)
|
||||
arg->layoutupdate_pages[i++] = vmalloc_to_page(p);
|
||||
}
|
||||
}
|
||||
|
||||
dprintk("%s found %zu ranges\n", __func__, count);
|
||||
|
|
Loading…
Reference in New Issue