]> git.ipfire.org Git - thirdparty/xfsprogs-dev.git/commitdiff
repair: add missing locking in scanfunc_bmap repair-speedup-20091112
authorBarry Naujok <bnaujok@sgi.com>
Thu, 12 Nov 2009 10:28:37 +0000 (11:28 +0100)
committerhch@lst.de <Christoph Hellwig>
Thu, 12 Nov 2009 10:28:37 +0000 (11:28 +0100)
Make sure to protect access to the block usage tracking btree with
the ag_lock.

Signed-off-by: Barry Naujok <bnaujok@sgi.com>
Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Alex Elder <aelder@sgi.com>
repair/scan.c

index 7435cc8de0dee2791b4836ed6179fd87a41b296b..5f5743e63af6c9b7363c54ca9cf31deaa78085e0 100644 (file)
@@ -235,6 +235,7 @@ _("bad back (left) sibling pointer (saw %llu should be NULL (0))\n"
                agno = XFS_FSB_TO_AGNO(mp, bno);
                agbno = XFS_FSB_TO_AGBNO(mp, bno);
 
+               pthread_mutex_lock(&ag_locks[agno]);
                state = get_bmap(agno, agbno);
                switch (state) {
                case XR_E_UNKNOWN:
@@ -280,6 +281,7 @@ _("bad back (left) sibling pointer (saw %llu should be NULL (0))\n"
                                state, ino, (__uint64_t) bno);
                        break;
                }
+               pthread_mutex_unlock(&ag_locks[agno]);
        } else  {
                /*
                 * attribute fork for realtime files is in the regular