Explorar o código

[XFS] Fix regression in xfs_buf_rele dealing with non-hashed buffers, as
occur during log replay. Novell bug 145204, Fedora bug 177848.

SGI-PV: 948860
SGI-Modid: xfs-linux-melb:xfs-kern:25064a

Signed-off-by: Nathan Scott <nathans@sgi.com>

Nathan Scott %!s(int64=19) %!d(string=hai) anos
pai
achega
fad3aa1e8e
Modificáronse 1 ficheiros con 7 adicións e 0 borrados
  1. 7 0
      fs/xfs/linux-2.6/xfs_buf.c

+ 7 - 0
fs/xfs/linux-2.6/xfs_buf.c

@@ -822,6 +822,13 @@ xfs_buf_rele(
 
 	XB_TRACE(bp, "rele", bp->b_relse);
 
+	if (unlikely(!hash)) {
+		ASSERT(!bp->b_relse);
+		if (atomic_dec_and_test(&bp->b_hold))
+			xfs_buf_free(bp);
+		return;
+	}
+
 	if (atomic_dec_and_lock(&bp->b_hold, &hash->bh_lock)) {
 		if (bp->b_relse) {
 			atomic_inc(&bp->b_hold);