} else { /* * Catch reference count leaks */ ASSERT(atomic_read(&pb->pb_hold) >= 0); 
pagebuf_rele(	xfs_buf_t		*pb){	xfs_bufhash_t		*hash = pb->pb_hash;	PB_TRACE(pb, "rele", pb->pb_relse);	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_DELWRI) {			pb->pb_flags |= PBF_ASYNC;			atomic_inc(&pb->pb_hold);			pagebuf_delwri_queue(pb, 0);			do_free = 0;		} else if (pb->pb_flags & PBF_FS_MANAGED) {			do_free = 0;		}		if (do_free) {			list_del_init(&pb->pb_hash_list);			spin_unlock(&hash->bh_lock);			pagebuf_free(pb);		} else {			spin_unlock(&hash->bh_lock);		}	}}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/2f926587512869ebf6bc820bd5f030e127aae774/xfs_buf.c/clean/fs/xfs/linux-2.6/xfs_buf.c