Browse Source

[XFS] Simplify pagebuf_rele Remove a conditional that can not be true
anymore and simplify the final put path a little

SGI-PV: 908809
SGI-Modid: xfs-linux:xfs-kern:200790a

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

Christoph Hellwig 19 years ago
parent
commit
7f14d0a013
1 changed files with 4 additions and 25 deletions
  1. 4 25
      fs/xfs/linux-2.6/xfs_buf.c

+ 4 - 25
fs/xfs/linux-2.6/xfs_buf.c

@@ -830,39 +830,18 @@ pagebuf_rele(
 
 	PB_TRACE(pb, "rele", pb->pb_relse);
 
-	/*
-	 * pagebuf_lookup buffers are not hashed, not delayed write,
-	 * and don't have their own release routines.  Special case.
-	 */
-	if (unlikely(!hash)) {
-		ASSERT(!pb->pb_relse);
-		if (atomic_dec_and_test(&pb->pb_hold))
-			xfs_buf_free(pb);
-		return;
-	}
-
 	if (atomic_dec_and_lock(&pb->pb_hold, &hash->bh_lock)) {
-		int		do_free = 1;
-
 		if (pb->pb_relse) {
 			atomic_inc(&pb->pb_hold);
 			spin_unlock(&hash->bh_lock);
 			(*(pb->pb_relse)) (pb);
-			spin_lock(&hash->bh_lock);
-			do_free = 0;
-		}
-
-		if (pb->pb_flags & PBF_FS_MANAGED) {
-			do_free = 0;
-		}
-
-		if (do_free) {
-			ASSERT((pb->pb_flags & (PBF_DELWRI|_PBF_DELWRI_Q)) == 0);
-			list_del_init(&pb->pb_hash_list);
+		} else if (pb->pb_flags & PBF_FS_MANAGED) {
 			spin_unlock(&hash->bh_lock);
-			pagebuf_free(pb);
 		} else {
+			ASSERT(!(pb->pb_flags & (PBF_DELWRI|_PBF_DELWRI_Q)));
+			list_del_init(&pb->pb_hash_list);
 			spin_unlock(&hash->bh_lock);
+			pagebuf_free(pb);
 		}
 	} else {
 		/*