Commit 482fce55 authored by Maxim Patlasov's avatar Maxim Patlasov Committed by Miklos Szeredi

fuse: restructure fuse_readpage()

Move the code filling and sending read request to a separate function. Future
patches will use it for .write_begin -- partial modification of a page
requires reading the page from the storage very similarly to what fuse_readpage
does.
Signed-off-by: default avatarMaxim Patlasov <MPatlasov@parallels.com>
Signed-off-by: default avatarMiklos Szeredi <mszeredi@suse.cz>
parent e7cc133c
...@@ -712,7 +712,7 @@ static void fuse_short_read(struct fuse_req *req, struct inode *inode, ...@@ -712,7 +712,7 @@ static void fuse_short_read(struct fuse_req *req, struct inode *inode,
} }
} }
static int fuse_readpage(struct file *file, struct page *page) static int fuse_do_readpage(struct file *file, struct page *page)
{ {
struct fuse_io_priv io = { .async = 0, .file = file }; struct fuse_io_priv io = { .async = 0, .file = file };
struct inode *inode = page->mapping->host; struct inode *inode = page->mapping->host;
...@@ -724,10 +724,6 @@ static int fuse_readpage(struct file *file, struct page *page) ...@@ -724,10 +724,6 @@ static int fuse_readpage(struct file *file, struct page *page)
u64 attr_ver; u64 attr_ver;
int err; int err;
err = -EIO;
if (is_bad_inode(inode))
goto out;
/* /*
* Page writeback can extend beyond the lifetime of the * Page writeback can extend beyond the lifetime of the
* page-cache page, so make sure we read a properly synced * page-cache page, so make sure we read a properly synced
...@@ -736,9 +732,8 @@ static int fuse_readpage(struct file *file, struct page *page) ...@@ -736,9 +732,8 @@ static int fuse_readpage(struct file *file, struct page *page)
fuse_wait_on_page_writeback(inode, page->index); fuse_wait_on_page_writeback(inode, page->index);
req = fuse_get_req(fc, 1); req = fuse_get_req(fc, 1);
err = PTR_ERR(req);
if (IS_ERR(req)) if (IS_ERR(req))
goto out; return PTR_ERR(req);
attr_ver = fuse_get_attr_version(fc); attr_ver = fuse_get_attr_version(fc);
...@@ -761,6 +756,20 @@ static int fuse_readpage(struct file *file, struct page *page) ...@@ -761,6 +756,20 @@ static int fuse_readpage(struct file *file, struct page *page)
} }
fuse_put_request(fc, req); fuse_put_request(fc, req);
return err;
}
static int fuse_readpage(struct file *file, struct page *page)
{
struct inode *inode = page->mapping->host;
int err;
err = -EIO;
if (is_bad_inode(inode))
goto out;
err = fuse_do_readpage(file, page);
fuse_invalidate_atime(inode); fuse_invalidate_atime(inode);
out: out:
unlock_page(page); unlock_page(page);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment