Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 144067
b: refs/heads/master
c: 67c457a
h: refs/heads/master
i:
  144065: d793b4f
  144063: ba6c076
v: v3
  • Loading branch information
Theodore Ts'o committed Apr 14, 2009
1 parent b993d76 commit 3a49f43
Show file tree
Hide file tree
Showing 4 changed files with 17 additions and 12 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 6b82f3cb2d480b7714eb0ff61aee99c22160389e
refs/heads/master: 67c457a8c378a006a34d92f9bd3078a80a92f250
3 changes: 2 additions & 1 deletion trunk/fs/jbd2/commit.c
Original file line number Diff line number Diff line change
Expand Up @@ -506,7 +506,8 @@ void jbd2_journal_commit_transaction(journal_t *journal)
if (err)
jbd2_journal_abort(journal, err);

jbd2_journal_write_revoke_records(journal, commit_transaction);
jbd2_journal_write_revoke_records(journal, commit_transaction,
write_op);

jbd_debug(3, "JBD: commit phase 2\n");

Expand Down
21 changes: 12 additions & 9 deletions trunk/fs/jbd2/revoke.c
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,7 @@
#include <linux/slab.h>
#include <linux/list.h>
#include <linux/init.h>
#include <linux/bio.h>
#endif
#include <linux/log2.h>

Expand Down Expand Up @@ -118,8 +119,8 @@ struct jbd2_revoke_table_s
#ifdef __KERNEL__
static void write_one_revoke_record(journal_t *, transaction_t *,
struct journal_head **, int *,
struct jbd2_revoke_record_s *);
static void flush_descriptor(journal_t *, struct journal_head *, int);
struct jbd2_revoke_record_s *, int);
static void flush_descriptor(journal_t *, struct journal_head *, int, int);
#endif

/* Utility functions to maintain the revoke table */
Expand Down Expand Up @@ -499,7 +500,8 @@ void jbd2_journal_switch_revoke_table(journal_t *journal)
* revoke hash, deleting the entries as we go.
*/
void jbd2_journal_write_revoke_records(journal_t *journal,
transaction_t *transaction)
transaction_t *transaction,
int write_op)
{
struct journal_head *descriptor;
struct jbd2_revoke_record_s *record;
Expand All @@ -523,14 +525,14 @@ void jbd2_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(jbd2_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);
}

Expand All @@ -543,7 +545,8 @@ static void write_one_revoke_record(journal_t *journal,
transaction_t *transaction,
struct journal_head **descriptorp,
int *offsetp,
struct jbd2_revoke_record_s *record)
struct jbd2_revoke_record_s *record,
int write_op)
{
struct journal_head *descriptor;
int offset;
Expand All @@ -562,7 +565,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;
}
}
Expand Down Expand Up @@ -607,7 +610,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)
{
jbd2_journal_revoke_header_t *header;
struct buffer_head *bh = jh2bh(descriptor);
Expand All @@ -622,7 +625,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

Expand Down
3 changes: 2 additions & 1 deletion trunk/include/linux/jbd2.h
Original file line number Diff line number Diff line change
Expand Up @@ -1193,7 +1193,8 @@ extern int jbd2_journal_init_revoke_caches(void);
extern void jbd2_journal_destroy_revoke(journal_t *);
extern int jbd2_journal_revoke (handle_t *, unsigned long long, struct buffer_head *);
extern int jbd2_journal_cancel_revoke(handle_t *, struct journal_head *);
extern void jbd2_journal_write_revoke_records(journal_t *, transaction_t *);
extern void jbd2_journal_write_revoke_records(journal_t *,
transaction_t *, int);

/* Recovery revoke support */
extern int jbd2_journal_set_revoke(journal_t *, unsigned long long, tid_t);
Expand Down

0 comments on commit 3a49f43

Please sign in to comment.