Subject: afs/fs/cachefs recycling.c,1.26,1.27

From: [email-masked]
Date: Tue, 15 Jul 2003 17:20:32 +0100

Update of /home/cvs/afs/fs/cachefs
In directory phoenix.infradead.org:/tmp/cvs-serv7217/fs/cachefs

Modified Files:
	recycling.c 
Log Message:
note the transfer of recycle -> alloc stacks in the RcycXfer record, not the
one after

Index: recycling.c
===================================================================
RCS file: /home/cvs/afs/fs/cachefs/recycling.c,v
retrieving revision 1.26
retrieving revision 1.27
diff -u -r1.26 -r1.27
--- recycling.c	10 Jul 2003 14:21:24 -0000	1.26
+++ recycling.c	15 Jul 2003 16:20:29 -0000	1.27
@@ -250,9 +250,15 @@
 
 		trans->jentry->mark	= CACHEFS_ONDISC_UJNL_RECYC_TRANSFER;
 		trans->jentry->block	= allocTOS;
+		super->recycle_cur	= 0;
+		super->alloc_cur	= allocTOS;
+		super->alloc_leaf	= 0;
 
 		ret = cachefs_trans_mark(trans);
 		if (ret < 0) {
+			super->recycle_cur	= allocTOS;
+			super->alloc_cur	= 0;
+			super->alloc_leaf	= 0;
 			printk("CacheFS: failed to mark ujnl: %d\n", ret);
 			_leave(" [error %d]", ret);
 			return;
@@ -260,7 +266,6 @@
 
 		super->recycle_block	= NULL;
 		super->recycle_node	= NULL;
-		super->recycle_cur	= 0;
 		super->recycle_cur_n	= 0;
 	}
 	/* otherwise transfer from the second-in-line if there is one */
@@ -302,8 +307,15 @@
 		trans->jentry->block	= allocTOS;
 		trans->jentry->upblock	= super->recycle_cur;
 
+		super->recycle_cur	= 0;
+		super->alloc_cur	= allocTOS;
+		super->alloc_leaf	= 0;
+
 		ret = cachefs_trans_mark(trans);
 		if (ret < 0) {
+			super->recycle_cur	= allocTOS;
+			super->alloc_cur	= 0;
+			super->alloc_leaf	= 0;
 			printk("CacheFS: failed to mark ujnl: %d\n", ret);
 			dbgpgfree(page);
 			page_cache_release(page);
@@ -314,8 +326,7 @@
 		}
 
 		/* break the pointer from the recycling stack TOS to the 2OS */
-		node = (struct cachefs_ondisc_free_node *)
-			kmap(super->recycle_node);
+		node = kmap(super->recycle_node);
 		node->next	= 0;
 		node->count	= 0;
 		kunmap(super->recycle_node);
@@ -325,9 +336,7 @@
 
 	set_bit(CACHEFS_BLOCK_CRITICAL, &block->flags);
 
-	super->alloc_cur	= allocTOS;
 	super->alloc_cur_n	= cur_n;
-	super->alloc_leaf	= 0;
 	super->alloc_block	= block;
 	super->alloc_node	= page;