Re: [PATCH 1.5/6] Fix race in new request delay code.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, Sep 21, 2010 at 06:35:21PM +1000, Neil Brown wrote:
> On Mon, 30 Aug 2010 09:36:08 +1000
> Neil Brown <neilb@xxxxxxx> wrote:
> 
> > On Thu, 26 Aug 2010 17:08:00 -0400
> > "J. Bruce Fields" <bfields@xxxxxxxxxxxx> wrote:
> > 
> > > On Tue, Aug 17, 2010 at 03:15:09PM +1000, NeilBrown wrote:
> > > > If the 'wait_for_completion_interruptible_timeout' completes due
> > > > to interrupt or timeout, just before cache_revisit request gets around
> > > > to calling ->revisit and thus the completion, we have a race with bad
> > > > consequences.
> > > > 
> > > > cache_defer_req will see that sleeper.handle.hash is empty (because
> > > > cache_revisit_request has already done the list_del_init), and that
> > > > CACHE_PENDING is clear, and so will exit that function leaving any
> > > > local variables such as 'sleeper' undefined.
> > > > 
> > > > Meanwhile cache_revisit_request could delete sleeper.handle.recent
> > > > from the 'pending' list, and call sleeper.hande.revisit, any of which
> > > > could have new garbage values and so could trigger a BUG.
> > > 
> > > Thanks, this looks correct to me!
> > > 
> > > I wish it were simpler, but don't see how right now.
> > 
> > I think the way to make it simpler is to get rid of the deferral altogether.
> > The more I think about it the less I like it :-)
> 
> I was in the process of doing this "getting rid of deferral" when I
> discovered that lockd now uses deferral too (and has done for 4 years! I am
> out of touch!!).  This is for NFS exporting cluster filesystems where 'lock'
> might take a while, but returns a 'grant'.
> 
> As lockd is single-threads we cannot just let it wait for the grant
> in-process.
> 
> So I guess I cannot rip all that code out after all :-(

Yeah, I'd forgotten about that.  Eventually perhaps we can fix lockd....

--b.
--
To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Filesystem Development]     [Linux USB Development]     [Linux Media Development]     [Video for Linux]     [Linux NILFS]     [Linux Audio Users]     [Yosemite Info]     [Linux SCSI]

  Powered by Linux