diff options
Diffstat (limited to 'fs')
| -rw-r--r-- | fs/jbd/commit.c | 2 | ||||
| -rw-r--r-- | fs/jbd/revoke.c | 20 | 
2 files changed, 12 insertions, 10 deletions
diff --git a/fs/jbd/commit.c b/fs/jbd/commit.c index a8e8513a78a..06560c520f4 100644 --- a/fs/jbd/commit.c +++ b/fs/jbd/commit.c @@ -502,7 +502,7 @@ void journal_commit_transaction(journal_t *journal)  		err = 0;  	} -	journal_write_revoke_records(journal, commit_transaction); +	journal_write_revoke_records(journal, commit_transaction, write_op);  	/*  	 * If we found any dirty or locked buffers, then we should have diff --git a/fs/jbd/revoke.c b/fs/jbd/revoke.c index c7bd649bbbd..1b1a06e1c83 100644 --- a/fs/jbd/revoke.c +++ b/fs/jbd/revoke.c @@ -67,6 +67,7 @@  #include <linux/slab.h>  #include <linux/list.h>  #include <linux/init.h> +#include <linux/bio.h>  #endif  #include <linux/log2.h> @@ -99,8 +100,8 @@ struct jbd_revoke_table_s  #ifdef __KERNEL__  static void write_one_revoke_record(journal_t *, transaction_t *,  				    struct journal_head **, int *, -				    struct jbd_revoke_record_s *); -static void flush_descriptor(journal_t *, struct journal_head *, int); +				    struct jbd_revoke_record_s *, int); +static void flush_descriptor(journal_t *, struct journal_head *, int, int);  #endif  /* Utility functions to maintain the revoke table */ @@ -486,7 +487,7 @@ void journal_switch_revoke_table(journal_t *journal)   */  void journal_write_revoke_records(journal_t *journal, -				  transaction_t *transaction) +				  transaction_t *transaction, int write_op)  {  	struct journal_head *descriptor;  	struct jbd_revoke_record_s *record; @@ -510,14 +511,14 @@ void journal_write_revoke_records(journal_t *journal,  				hash_list->next;  			write_one_revoke_record(journal, transaction,  						&descriptor, &offset, -						record); +						record, write_op);  			count++;  			list_del(&record->hash);  			kmem_cache_free(revoke_record_cache, record);  		}  	}  	if (descriptor) -		flush_descriptor(journal, descriptor, offset); +		flush_descriptor(journal, descriptor, offset, write_op);  	jbd_debug(1, "Wrote %d revoke records\n", count);  } @@ -530,7 +531,8 @@ static void write_one_revoke_record(journal_t *journal,  				    transaction_t *transaction,  				    struct journal_head **descriptorp,  				    int *offsetp, -				    struct jbd_revoke_record_s *record) +				    struct jbd_revoke_record_s *record, +				    int write_op)  {  	struct journal_head *descriptor;  	int offset; @@ -549,7 +551,7 @@ static void write_one_revoke_record(journal_t *journal,  	/* Make sure we have a descriptor with space left for the record */  	if (descriptor) {  		if (offset == journal->j_blocksize) { -			flush_descriptor(journal, descriptor, offset); +			flush_descriptor(journal, descriptor, offset, write_op);  			descriptor = NULL;  		}  	} @@ -586,7 +588,7 @@ static void write_one_revoke_record(journal_t *journal,  static void flush_descriptor(journal_t *journal,  			     struct journal_head *descriptor, -			     int offset) +			     int offset, int write_op)  {  	journal_revoke_header_t *header;  	struct buffer_head *bh = jh2bh(descriptor); @@ -601,7 +603,7 @@ static void flush_descriptor(journal_t *journal,  	set_buffer_jwrite(bh);  	BUFFER_TRACE(bh, "write");  	set_buffer_dirty(bh); -	ll_rw_block(SWRITE, 1, &bh); +	ll_rw_block((write_op == WRITE) ? SWRITE : SWRITE_SYNC_PLUG, 1, &bh);  }  #endif  | 
