gfs2: Use GL_NOBLOCK flag for non-blocking lookups
authorAbhi Das <adas@redhat.com>
Fri, 10 Nov 2023 12:10:08 +0000 (13:10 +0100)
committerAndreas Gruenbacher <agruenba@redhat.com>
Mon, 18 Dec 2023 13:24:33 +0000 (14:24 +0100)
commitdd00aaeb343255a8a30de671bd27bde79a47c8e5
tree521dfaa2891b730c7d8260905c2bde3579102fd5
parentf9f229c1f75df2f1fe63b16615d184da4e90bb10
gfs2: Use GL_NOBLOCK flag for non-blocking lookups

Add the GL_NOBLOCK flag to the locking requests in gfs2_permission() and
gfs2_drevalidate() when called with the MAY_NOT_BLOCK flag and
LOOKUP_RCU flag, respectively.  This will cause the locking requests to
be handled without sleeping if possible.  We bail out with -ECHILD if we
can't grant the glock immediately.

Make sure not to dget() + dput() the parent dentry in gfs2_drevalidate()
in LOOKUP_RCU mode; dput() is a sleeping operation.

Signed-off-by: Abhi Das <adas@redhat.com>
Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com>
fs/gfs2/dentry.c
fs/gfs2/inode.c