]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
gfs2: don't lock sd_log_flush_lock in try_rgrp_unlink
authorBob Peterson <rpeterso@redhat.com>
Thu, 26 Mar 2020 17:18:21 +0000 (12:18 -0500)
committerBob Peterson <rpeterso@redhat.com>
Fri, 27 Mar 2020 19:08:05 +0000 (14:08 -0500)
In function try_rgrp_unlink, we added a temporary lock of the
sd_log_flush_lock while searching the bitmaps. This protected us from
problems in which dinodes being freed were still in a state of flux
because the rgrp was in an active transaction. It was a kludge.
Now that we've straightened out the code for inode eviction, deletes,
and all the recovery mess, we no longer need this kludge.
This patch removes it, and should improve performance.

Signed-off-by: Bob Peterson <rpeterso@redhat.com>
fs/gfs2/rgrp.c

index 692dc11d0f139f145cfc9104b67581508578379c..a321c34e3d6e6b602ff764913a5c72d6def96c38 100644 (file)
@@ -1806,10 +1806,8 @@ static void try_rgrp_unlink(struct gfs2_rgrpd *rgd, u64 *last_unlinked, u64 skip
        struct gfs2_rbm rbm = { .rgd = rgd, .bii = 0, .offset = 0 };
 
        while (1) {
-               down_write(&sdp->sd_log_flush_lock);
                error = gfs2_rbm_find(&rbm, GFS2_BLKST_UNLINKED, NULL, NULL,
                                      true);
-               up_write(&sdp->sd_log_flush_lock);
                if (error == -ENOSPC)
                        break;
                if (WARN_ON_ONCE(error))