Re: [PATCH] autofs - use dentry flags to block walks during expire

From: Andrew Morton
Date: Mon Sep 12 2016 - 17:07:23 EST


On Mon, 12 Sep 2016 09:40:17 +0800 Ian Kent <raven@xxxxxxxxxx> wrote:

> Somewhere along the way the autofs expire operation has changed to
> hold a spin lock over expired dentry selection. The autofs indirect
> mount expired dentry selection is complicated and quite lengthy so
> it isn't appropriate to hold a spin lock over the operation.
>
> Commit 47be6184 added a might_sleep() to dput() causing a BUG()
> about this usage to be issued.

It's a WARN_ONCE(), not a BUG()?

> But the spin lock doesn't need to be held over this check, the
> autofs dentry info. flags are enough to block walks into dentrys
> during the expire.
>
> I've left the direct mount expire as it is (for now) becuase it
> is much simpler and quicker than the indirect mount expire and
> adding spin lock release and re-aquires would do nothing more
> than add overhead.
>
> Fixes: 47be61845c77 ("fs/dcache.c: avoid soft-lockup in dput()")
> Signed-off-by: Ian Kent <raven@xxxxxxxxxx>
> Cc: Takashi Iwai <tiwai@xxxxxxx>
> Cc: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx>
> Cc: NeilBrown <neilb@xxxxxxxx>

47be61845c77 is cc:stable, so this should be likewise.

I've made those two changes to my copy of this changelog.