trans_logger: never collect non-persistent data for writeback

This commit is contained in:
Thomas Schoebel-Theuer 2013-01-01 22:36:33 +01:00
parent f569a3f604
commit 71429b5bee
2 changed files with 6 additions and 0 deletions

View File

@ -405,6 +405,10 @@ void hash_extend(struct trans_logger_brick *brick, loff_t *_pos, int *_len, stru
if (test_a->is_collected)
goto collision;
// no writeback of non-persistent data
if (!test_a->is_persistent)
goto collision;
// extend the search region when necessary
diff = pos - test->ref_pos;
if (diff > 0) {
@ -1446,6 +1450,7 @@ void phase0_endio(void *private, int error)
orig_mref = orig_mref_a->object;
CHECK_PTR(orig_mref, err);
orig_mref_a->is_persistent = true;
qq_dec_flying(&brick->q_phase[0]);
/* Pin mref->ref_count so it can't go away

View File

@ -128,6 +128,7 @@ struct trans_logger_mref_aspect {
bool is_collected;
bool is_fired;
bool is_completed;
bool is_persistent;
struct timespec stamp;
loff_t log_pos;
struct generic_callback cb;