Messages in this thread | | | Date | Thu, 20 Mar 2014 10:32:07 -0400 | From | Dave Jones <> | Subject | Re: [PATCH 2/2] aio: fix the confliction of read events and migrating ring page |
| |
On Thu, Mar 20, 2014 at 01:46:25PM +0800, Gu Zheng wrote:
> diff --git a/fs/aio.c b/fs/aio.c > index 88ad40c..e353085 100644 > --- a/fs/aio.c > +++ b/fs/aio.c > @@ -319,6 +319,9 @@ static int aio_migratepage(struct address_space *mapping, struct page *new, > ctx->ring_pages[old->index] = new; > spin_unlock_irqrestore(&ctx->completion_lock, flags); > > + /* Ensure read event is completed before putting old page */ > + mutex_lock(&ctx->ring_lock); > + mutex_unlock(&ctx->ring_lock); > put_page(old); > > return rc;
This looks a bit weird. Would using a completion work here ?
Dave
| |