From: Nick Piggin Signed-off-by: Nick Piggin Signed-off-by: Andrew Morton --- fs/ufs/dir.c | 6 +++--- 1 files changed, 3 insertions(+), 3 deletions(-) diff -puN fs/ufs/dir.c~ufs-convert-to-new-aops-fix fs/ufs/dir.c --- a/fs/ufs/dir.c~ufs-convert-to-new-aops-fix +++ a/fs/ufs/dir.c @@ -89,7 +89,7 @@ ino_t ufs_inode_by_name(struct inode *di void ufs_set_link(struct inode *dir, struct ufs_dir_entry *de, struct page *page, struct inode *inode) { - loff_t pos = (page->index << PAGE_CACHE_SHIFT) + + loff_t pos = page_offset(page) + (char *) de - (char *) page_address(page); unsigned len = fs16_to_cpu(dir->i_sb, de->d_reclen); int err; @@ -379,7 +379,7 @@ int ufs_add_link(struct dentry *dentry, return -EINVAL; got_it: - pos = (page->index << PAGE_CACHE_SHIFT) + + pos = page_offset(page) + (char*)de - (char*)page_address(page); err = __ufs_write_begin(NULL, page->mapping, pos, rec_len, AOP_FLAG_UNINTERRUPTIBLE, &page, NULL); @@ -547,7 +547,7 @@ int ufs_delete_entry(struct inode *inode if (pde) from = (char*)pde - (char*)page_address(page); - pos = (page->index << PAGE_CACHE_SHIFT) + from; + pos = page_offset(page) + from; lock_page(page); err = __ufs_write_begin(NULL, mapping, pos, to - from, AOP_FLAG_UNINTERRUPTIBLE, &page, NULL); _