{
        struct inode *inode = page->mapping->host;
        struct fuse_conn *fc = get_fuse_conn(inode);
-       loff_t pos = (loff_t) page->index << PAGE_CACHE_SHIFT;
        struct fuse_req *req = fuse_get_request(fc);
        int err = -EINTR;
        if (!req)
        req->out.page_zeroing = 1;
        req->num_pages = 1;
        req->pages[0] = page;
-       fuse_send_read(req, file, inode, pos, PAGE_CACHE_SIZE);
+       fuse_send_read(req, file, inode, page_offset(page), PAGE_CACHE_SIZE);
        err = req->out.h.error;
        fuse_put_request(fc, req);
        if (!err)
 static int fuse_send_readpages(struct fuse_req *req, struct file *file,
                               struct inode *inode)
 {
-       loff_t pos = (loff_t) req->pages[0]->index << PAGE_CACHE_SHIFT;
+       loff_t pos = page_offset(req->pages[0]);
        size_t count = req->num_pages << PAGE_CACHE_SHIFT;
        unsigned i;
        req->out.page_zeroing = 1;
        unsigned count = to - offset;
        struct inode *inode = page->mapping->host;
        struct fuse_conn *fc = get_fuse_conn(inode);
-       loff_t pos = ((loff_t) page->index << PAGE_CACHE_SHIFT) + offset;
+       loff_t pos = page_offset(page) + offset;
        struct fuse_req *req = fuse_get_request(fc);
        if (!req)
                return -EINTR;