[PATCH 14/14] repair: add missing locking in scanfunc_bmap

Christoph Hellwig
2009-09-02T17:58:33Z

[-- Attachment #1: repair-scanfunc_bmap-locking --]
[-- Type: text/plain, Size: 941 bytes --]

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>

Index: xfsprogs-dev/repair/scan.c
===================================================================
--- xfsprogs-dev.orig/repair/scan.c 2009-08-20 03:16:13.000000000 +0000
+++ xfsprogs-dev/repair/scan.c 2009-08-20 03:18:17.000000000 +0000
@@ -235,6 +235,7 @@
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 @@
state, ino, (__uint64_t) bno);
break;
}
+ pthread_mutex_unlock(&ag_locks[agno]);
} else {
/*
* attribute fork for realtime files is in the regular