gfs2: Simplify function gfs2_upgrade_iopen_glock
authorAndreas Gruenbacher <agruenba@redhat.com>
Sun, 11 Dec 2022 20:25:39 +0000 (21:25 +0100)
committerAndreas Gruenbacher <agruenba@redhat.com>
Mon, 18 Sep 2023 21:13:20 +0000 (23:13 +0200)
When trying to upgrade the iopen glock, gfs2_upgrade_iopen_glock() tries
to take the iopen glock with the LM_FLAG_TRY_1CB flag set before trying
to take it without the LM_FLAG_TRY or LM_FLAG_TRY_1CB flags set.  Both
calls will cause the lock contention bast callbacks to be invoked
throughout the cluster, and we really don't need them to be invoked
twice.  Remove the first LM_FLAG_TRY_1CB call to eliminate unnecessary
dlm traffic.

Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com>
fs/gfs2/super.c

index 02d93da21b2b07643c6a7be334ca5b6838efb115..3141db77189e99b1ded6373b14b6a23508150bec 100644 (file)
@@ -1299,18 +1299,8 @@ static bool gfs2_upgrade_iopen_glock(struct inode *inode)
         * As a last resort, if another node keeps holding the iopen glock
         * without showing any activity on the inode glock, we will eventually
         * time out and fail the iopen glock upgrade.
-        *
-        * Note that we're passing the LM_FLAG_TRY_1CB flag to the first
-        * locking request as an optimization to notify lock holders as soon as
-        * possible.  Without that flag, they'd be notified implicitly by the
-        * second locking request.
         */
 
-       gfs2_holder_reinit(LM_ST_EXCLUSIVE, LM_FLAG_TRY_1CB | GL_NOCACHE, gh);
-       error = gfs2_glock_nq(gh);
-       if (error != GLR_TRYFAILED)
-               return !error;
-
        gfs2_holder_reinit(LM_ST_EXCLUSIVE, GL_ASYNC | GL_NOCACHE, gh);
        error = gfs2_glock_nq(gh);
        if (error)