diff options
Diffstat (limited to 'fs/jbd/commit.c')
| -rw-r--r-- | fs/jbd/commit.c | 11 | 
1 files changed, 5 insertions, 6 deletions
| diff --git a/fs/jbd/commit.c b/fs/jbd/commit.c index 4bd882548c4..ecb44c94ba8 100644 --- a/fs/jbd/commit.c +++ b/fs/jbd/commit.c @@ -17,7 +17,6 @@  #include <linux/fs.h>  #include <linux/jbd.h>  #include <linux/errno.h> -#include <linux/slab.h>  #include <linux/mm.h>  #include <linux/pagemap.h>  #include <linux/bio.h> @@ -862,12 +861,12 @@ restart_loop:  		/* A buffer which has been freed while still being  		 * journaled by a previous transaction may end up still  		 * being dirty here, but we want to avoid writing back -		 * that buffer in the future now that the last use has -		 * been committed.  That's not only a performance gain, -		 * it also stops aliasing problems if the buffer is left -		 * behind for writeback and gets reallocated for another +		 * that buffer in the future after the "add to orphan" +		 * operation been committed,  That's not only a performance +		 * gain, it also stops aliasing problems if the buffer is +		 * left behind for writeback and gets reallocated for another  		 * use in a different page. */ -		if (buffer_freed(bh)) { +		if (buffer_freed(bh) && !jh->b_next_transaction) {  			clear_buffer_freed(bh);  			clear_buffer_jbddirty(bh);  		} | 
