+ jbd-split-checkpoint-lists-tidy.patch added to -mm tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



The patch titled

     jbd-split-checkpoint-lists-tidy

has been added to the -mm tree.  Its filename is

     jbd-split-checkpoint-lists-tidy.patch

See http://www.zip.com.au/~akpm/linux/patches/stuff/added-to-mm.txt to find
out what to do about this


From: Andrew Morton <akpm@xxxxxxxx>

Cc: Jan Kara <jack@xxxxxxx>
Cc: Mark Fasheh <mark.fasheh@xxxxxxxxxx>
Cc: "Stephen C. Tweedie" <sct@xxxxxxxxxx>
Signed-off-by: Andrew Morton <akpm@xxxxxxxx>
---

 fs/jbd/checkpoint.c |   67 ++++++++++++++++++++----------------------
 1 files changed, 32 insertions(+), 35 deletions(-)

diff -puN fs/jbd/checkpoint.c~jbd-split-checkpoint-lists-tidy fs/jbd/checkpoint.c
--- 25/fs/jbd/checkpoint.c~jbd-split-checkpoint-lists-tidy	Tue May  9 10:34:34 2006
+++ 25-akpm/fs/jbd/checkpoint.c	Tue May  9 10:34:34 2006
@@ -28,12 +28,9 @@
  *
  * Called with j_list_lock held.
  */
-
 static inline void __buffer_unlink_first(struct journal_head *jh)
 {
-	transaction_t *transaction;
-
-	transaction = jh->b_cp_transaction;
+	transaction_t *transaction = jh->b_cp_transaction;
 
 	jh->b_cpnext->b_cpprev = jh->b_cpprev;
 	jh->b_cpprev->b_cpnext = jh->b_cpnext;
@@ -49,12 +46,9 @@ static inline void __buffer_unlink_first
  *
  * Called with j_list_lock held.
  */
-
 static inline void __buffer_unlink(struct journal_head *jh)
 {
-	transaction_t *transaction;
-
-	transaction = jh->b_cp_transaction;
+	transaction_t *transaction = jh->b_cp_transaction;
 
 	__buffer_unlink_first(jh);
 	if (transaction->t_checkpoint_io_list == jh) {
@@ -69,12 +63,10 @@ static inline void __buffer_unlink(struc
  *
  * Called with j_list_lock held
  */
-
 static inline void __buffer_relink_io(struct journal_head *jh)
 {
-	transaction_t *transaction;
+	transaction_t *transaction = jh->b_cp_transaction;
 
-	transaction = jh->b_cp_transaction;
 	__buffer_unlink_first(jh);
 
 	if (!transaction->t_checkpoint_io_list) {
@@ -169,7 +161,6 @@ static void jbd_sync_bh(journal_t *journ
  *
  * Called with j_list_lock held.
  */
-
 static void __wait_cp_io(journal_t *journal, transaction_t *transaction)
 {
 	struct journal_head *jh;
@@ -179,9 +170,9 @@ static void __wait_cp_io(journal_t *jour
 
 	this_tid = transaction->t_tid;
 restart:
-	/* Didn't somebody clean up the transaction in the meanwhile */
+	/* Did somebody clean up the transaction in the meanwhile? */
 	if (journal->j_checkpoint_transactions != transaction ||
-		transaction->t_tid != this_tid)
+			transaction->t_tid != this_tid)
 		return;
 	while (!released && transaction->t_checkpoint_io_list) {
 		jh = transaction->t_checkpoint_io_list;
@@ -202,8 +193,10 @@ restart:
 			spin_lock(&journal->j_list_lock);
 			goto restart;
 		}
-		/* Now in whatever state the buffer currently is, we know that
-		 * it has been written out and so we can drop it from the list */
+		/*
+		 * Now in whatever state the buffer currently is, we know that
+		 * it has been written out and so we can drop it from the list
+		 */
 		released = __journal_remove_checkpoint(jh);
 		jbd_unlock_bh_state(bh);
 		journal_remove_journal_head(bh);
@@ -252,8 +245,7 @@ static int __process_buffer(journal_t *j
 		BUFFER_TRACE(bh, "brelse");
 		__brelse(bh);
 		ret = 1;
-	}
-	else if (jh->b_transaction != NULL) {
+	} else if (jh->b_transaction != NULL) {
 		transaction_t *t = jh->b_transaction;
 		tid_t tid = t->t_tid;
 
@@ -262,8 +254,7 @@ static int __process_buffer(journal_t *j
 		log_start_commit(journal, tid);
 		log_wait_commit(journal, tid);
 		ret = 1;
-	}
-	else if (!buffer_dirty(bh)) {
+	} else if (!buffer_dirty(bh)) {
 		J_ASSERT_JH(jh, !buffer_jbddirty(bh));
 		BUFFER_TRACE(bh, "remove from checkpoint");
 		__journal_remove_checkpoint(jh);
@@ -272,8 +263,7 @@ static int __process_buffer(journal_t *j
 		journal_remove_journal_head(bh);
 		__brelse(bh);
 		ret = 1;
-	}
-	else {
+	} else {
 		/*
 		 * Important: we are about to write the buffer, and
 		 * possibly block, while still holding the journal lock.
@@ -338,8 +328,8 @@ restart:
 	 * done (maybe it's a new transaction, but it fell at the same
 	 * address).
 	 */
- 	if (journal->j_checkpoint_transactions == transaction
-		&& transaction->t_tid == this_tid) {
+	if (journal->j_checkpoint_transactions == transaction &&
+			transaction->t_tid == this_tid) {
 		int batch_count = 0;
 		struct buffer_head *bhs[NR_BATCH];
 		struct journal_head *jh;
@@ -355,10 +345,8 @@ restart:
 				retry = 1;
 				break;
 			}
-			retry = __process_buffer(journal, jh, bhs,
-				&batch_count);
-			if (!retry &&
-			    lock_need_resched(&journal->j_list_lock)) {
+			retry = __process_buffer(journal, jh, bhs,&batch_count);
+			if (!retry && lock_need_resched(&journal->j_list_lock)){
 				spin_unlock(&journal->j_list_lock);
 				retry = 1;
 				break;
@@ -377,8 +365,10 @@ restart:
 			spin_lock(&journal->j_list_lock);
 			goto restart;
 		}
-		/* Now we have cleaned up the first transaction's checkpoint
-		 * list. Let's clean up the second one. */
+		/*
+		 * Now we have cleaned up the first transaction's checkpoint
+		 * list. Let's clean up the second one
+		 */
 		__wait_cp_io(journal, transaction);
 	}
 out:
@@ -530,7 +520,8 @@ static int journal_clean_one_cp_list(str
 int __journal_clean_checkpoint_list(journal_t *journal)
 {
 	transaction_t *transaction, *last_transaction, *next_transaction;
-	int ret = 0, released;
+	int ret = 0;
+	int released;
 
 	transaction = journal->j_checkpoint_transactions;
 	if (!transaction)
@@ -543,14 +534,20 @@ int __journal_clean_checkpoint_list(jour
 		next_transaction = transaction->t_cpnext;
 		ret += journal_clean_one_cp_list(transaction->
 				t_checkpoint_list, &released);
+		/*
+		 * This function only frees up some memory if possible so we
+		 * dont have an obligation to finish processing. Bail out if
+		 * preemption requested:
+		 */
 		if (need_resched())
 			goto out;
 		if (released)
 			continue;
-		/* It is essential that we are as careful as in the case of
-		   t_checkpoint_list with removing the buffer from the list
-		   as we can possibly see not yet submitted buffers on
-		   io_list */
+		/*
+		 * It is essential that we are as careful as in the case of
+		 * t_checkpoint_list with removing the buffer from the list as
+		 * we can possibly see not yet submitted buffers on io_list
+		 */
 		ret += journal_clean_one_cp_list(transaction->
 				t_checkpoint_io_list, &released);
 		if (need_resched())
_

Patches currently in -mm which might be from akpm@xxxxxxxx are

origin.patch
autofs4-nfy_none-wait-race-fix-tidy.patch
git-acpi.patch
acpi-update-asus_acpi-driver-registration-fix.patch
acpi-memory-hotplug-cannot-manage-_crs-with-plural-resoureces.patch
catch-notification-of-memory-add-event-of-acpi-via-container-driver-register-start-func-for-memory-device.patch
catch-notification-of-memory-add-event-of-acpi-via-container-driveravoid-redundant-call-add_memory.patch
remove-for_each_cpu.patch
sony_apci-resume.patch
powernow-k8-crash-workaround.patch
git-dvb.patch
git-gfs2.patch
via-pmu-add-input-device-tidy.patch
git-libata-all.patch
git-mtd.patch
git-netdev-all.patch
smc911x-Kconfig-fix.patch
pci-error-recovery-e1000-network-device-driver.patch
git-powerpc.patch
git-rbtree.patch
git-sas.patch
git-serial.patch
gregkh-pci-pci-64-bit-resources-drivers-others-changes-amba-fix.patch
git-scsi-misc.patch
git-scsi-rc-fixes.patch
areca-raid-linux-scsi-driver-update6-for-2617-rc1-mm3-externs-go-in-headers.patch
git-watchdog.patch
xfs-sparc32-build-fix.patch
pg_uncached-is-ia64-only.patch
pgdat-allocation-for-new-node-add-specify-node-id-powerpc-fix.patch
pgdat-allocation-for-new-node-add-specify-node-id-tidy.patch
pgdat-allocation-for-new-node-add-specify-node-id-fix-3.patch
pgdat-allocation-for-new-node-add-get-node-id-by-acpi-tidy.patch
pgdat-allocation-for-new-node-add-generic-alloc-node_data-tidy.patch
pgdat-allocation-for-new-node-add-refresh-node_data-fix.patch
pgdat-allocation-for-new-node-add-export-kswapd-start-func-tidy.patch
catch-valid-mem-range-at-onlining-memory-tidy.patch
catch-valid-mem-range-at-onlining-memory-fix.patch
mm-introduce-remap_vmalloc_range-fix.patch
acx1xx-wireless-driver.patch
dont-use-flush_tlb_all-in-suspend-time-tidy.patch
prune_one_dentry-tweaks.patch
mmput-might-sleep.patch
jbd-avoid-kfree-null.patch
ext3_clear_inode-avoid-kfree-null.patch
leds-amstrad-delta-led-support-tidy.patch
percpu-counter-data-type-changes-to-suppport-fix.patch
connector-exports.patch
config_net=n-build-fix.patch
jbd-split-checkpoint-lists-tidy.patch
hangcheck-remove-monotomic_clock-on-x86.patch
pi-futex-futex-code-cleanups-fix.patch
reiser4.patch
savagefb-add-state-save-and_restore-hooks-tidy.patch
kgdb-core-lite-add-reboot-command.patch
kgdb-8250-fix.patch
nr_blockdev_pages-in_interrupt-warning.patch
device-suspend-debug.patch
revert-tty-buffering-comment-out-debug-code.patch
slab-leaks3-default-y.patch
x86-kmap_atomic-debugging.patch
profile-likely-unlikely-macros-tidy.patch
profile-likely-unlikely-macros-fix.patch
profile-likely-unlikely-macros-fix-2.patch
exit-dont-call-sleeping-things-when-oopsing.patch

-
To unsubscribe from this list: send the line "unsubscribe mm-commits" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Kernel Newbies FAQ]     [Kernel Archive]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [Bugtraq]     [Photo]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]

  Powered by Linux