Message ID | 20200917151050.5363-5-willy@infradead.org |
---|---|
State | New |
Headers | show |
Series | Allow readpage to return a locked page | expand |
On Thu, 2020-09-17 at 16:10 +0100, Matthew Wilcox (Oracle) wrote: > The ceph readpage implementation was already synchronous, so use > AOP_UPDATED_PAGE to avoid cycling the page lock. > > Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org> > --- > fs/ceph/addr.c | 9 +++++---- > 1 file changed, 5 insertions(+), 4 deletions(-) > > diff --git a/fs/ceph/addr.c b/fs/ceph/addr.c > index 6ea761c84494..b2bf8bf7a312 100644 > --- a/fs/ceph/addr.c > +++ b/fs/ceph/addr.c > @@ -291,10 +291,11 @@ static int ceph_do_readpage(struct file *filp, struct page *page) > static int ceph_readpage(struct file *filp, struct page *page) > { > int r = ceph_do_readpage(filp, page); > - if (r != -EINPROGRESS) > - unlock_page(page); > - else > - r = 0; > + if (r == -EINPROGRESS) > + return 0; > + if (r == 0) > + return AOP_UPDATED_PAGE; > + unlock_page(page); > return r; > } > Looks good to me. I assume you'll merge all of these as a set since the early ones are a prerequisite? Reviewed-by: Jeff Layton <jlayton@kernel.org>
diff --git a/fs/ceph/addr.c b/fs/ceph/addr.c index 6ea761c84494..b2bf8bf7a312 100644 --- a/fs/ceph/addr.c +++ b/fs/ceph/addr.c @@ -291,10 +291,11 @@ static int ceph_do_readpage(struct file *filp, struct page *page) static int ceph_readpage(struct file *filp, struct page *page) { int r = ceph_do_readpage(filp, page); - if (r != -EINPROGRESS) - unlock_page(page); - else - r = 0; + if (r == -EINPROGRESS) + return 0; + if (r == 0) + return AOP_UPDATED_PAGE; + unlock_page(page); return r; }
The ceph readpage implementation was already synchronous, so use AOP_UPDATED_PAGE to avoid cycling the page lock. Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org> --- fs/ceph/addr.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-)