The following patches to nfs2xdr.c/nfs3xdr.c might be relevant: *entry
points into the page, and so the assignment should be made before we
kunmap().
Also includes a patch that converts references to inode->i_data into
inode->i_mapping. Not likely to be the source of your hang, but should
still be done for consistency with the rest of the kernel.
dfprintk(VFS, "NFS: find_dirent_page() searching directory page %ld\n", desc->page_index);
- page = read_cache_page(&inode->i_data, desc->page_index,
+ page = read_cache_page(inode->i_mapping, desc->page_index,
(filler_t *)nfs_readdir_filler, desc);
if (IS_ERR(page)) {
status = PTR_ERR(page);
desc.page_index = 0;
desc.plus = 1;
- for(;(page = find_get_page(&dir->i_data, desc.page_index)); desc.page_index++) {
+ for(;(page = find_get_page(dir->i_mapping, desc.page_index)); desc.page_index++) {
res = -EIO;
if (PageUptodate(page)) {
kunmap(*page);
return nr;
short_pkt:
- kunmap(*page);
printk(KERN_NOTICE "NFS: short packet in readdir reply!\n");
entry[0] = entry[1] = 0;
+ kunmap(*page);
return nr;
err_unmap:
kunmap(*page);
kunmap(*page);
return nr;
short_pkt:
- kunmap(*page);
printk(KERN_NOTICE "NFS: short packet in readdir reply!\n");
/* truncate listing */
entry[0] = entry[1] = 0;
+ kunmap(*page);
return nr;
err_unmap:
kunmap(*page);