From: Darrick J. Wong Date: Thu, 31 May 2018 19:09:54 +0000 (-0500) Subject: xfs_buflock: record buffer initialization X-Git-Tag: v4.17.0-rc1~14 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=184798fd4401177040b022b6d18a26384810fb8c;p=thirdparty%2Fxfsprogs-dev.git xfs_buflock: record buffer initialization Buffers are created locked, so we have to factor that into the buffer state machine that the script utilizes. Signed-off-by: Darrick J. Wong Reviewed-by: Allison Henderson Signed-off-by: Eric Sandeen --- diff --git a/tools/xfsbuflock.py b/tools/xfsbuflock.py index 954f09543..8f38f9f0a 100755 --- a/tools/xfsbuflock.py +++ b/tools/xfsbuflock.py @@ -91,6 +91,13 @@ class Buffer: if not self.locked: self.lockdone(process, time) + def init(self, process, time): + # Buffers are initialized locked, but we could be allocating + # a surplus buffer while trying to grab a buffer that may or + # may not already exist. + if not self.locked: + self.lockdone(process, time) + def lockdone(self, process, time): if self.locked: print('Buffer 0x%x already locked at line %d? (line %d)' % \ @@ -183,6 +190,10 @@ for line in fileinput.input(): buf = getbuf(toks) if buf is not None: buf.trylock(proc, time) + elif fn == 'xfs_buf_init': + buf = getbuf(toks) + if buf is not None: + buf.init(proc, time) elif fn == 'xfs_buf_item_unlock': pass else: