From: Nick Piggin Signed-off-by: Nick Piggin Signed-off-by: Andrew Morton --- fs/sysv/dir.c | 6 +++--- 1 files changed, 3 insertions(+), 3 deletions(-) diff -puN fs/sysv/dir.c~sysv-convert-to-new-aops-fix fs/sysv/dir.c --- a/fs/sysv/dir.c~sysv-convert-to-new-aops-fix +++ a/fs/sysv/dir.c @@ -219,7 +219,7 @@ int sysv_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); lock_page(page); err = __sysv_write_begin(NULL, page->mapping, pos, SYSV_DIRSIZE, @@ -246,7 +246,7 @@ int sysv_delete_entry(struct sysv_dir_en struct address_space *mapping = page->mapping; struct inode *inode = (struct inode*)mapping->host; char *kaddr = (char*)page_address(page); - loff_t pos = (page->index << PAGE_CACHE_SHIFT) + (char *)de - kaddr; + loff_t pos = page_offset(page) + (char *)de - kaddr; int err; lock_page(page); @@ -347,7 +347,7 @@ void sysv_set_link(struct sysv_dir_entry { struct address_space *mapping = page->mapping; struct inode *dir = mapping->host; - loff_t pos = (page->index << PAGE_CACHE_SHIFT) + + loff_t pos = page_offset(page) + (char *)de-(char*)page_address(page); int err; _