diff options
author | Jens Axboe <axboe@kernel.dk> | 2019-11-18 08:35:47 -0700 |
---|---|---|
committer | Jens Axboe <axboe@kernel.dk> | 2019-11-18 08:35:47 -0700 |
commit | 00b89892c869f34528deca957b10d1468c4e8b38 (patch) | |
tree | 6cff935bea03f4c7ad81a786b200dbe33535225c /drivers/md | |
parent | 97ab474c2dba93fe0bfddc23d58f35d5b562d6ad (diff) |
Revert "bcache: fix fifo index swapping condition in journal_pin_cmp()"
Coly says:
"Guoju Fang talked to me today, he told me this change was unnecessary
and I was over-thought.
Then I realize fifo_idx() uses a mask to handle the array index overflow
condition, so the index swap in journal_pin_cmp() won't happen. And yes,
Guoju and Kent are correct.
Since you already applied this patch, can you please to remove this
patch from your for-next branch? This single patch does not break
thing, but it is unecessary at this moment."
This reverts commit c0e0954e909c17b43d176ab219fc598964616ae6.
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Diffstat (limited to 'drivers/md')
-rw-r--r-- | drivers/md/bcache/btree.c | 26 | ||||
-rw-r--r-- | drivers/md/bcache/journal.h | 4 |
2 files changed, 4 insertions, 26 deletions
diff --git a/drivers/md/bcache/btree.c b/drivers/md/bcache/btree.c index 3df5fa4a501c..14d6c33b0957 100644 --- a/drivers/md/bcache/btree.c +++ b/drivers/md/bcache/btree.c @@ -528,32 +528,6 @@ static void btree_node_write_work(struct work_struct *w) mutex_unlock(&b->write_lock); } -/* return true if journal pin 'l' is newer than 'r' */ -static bool journal_pin_cmp(struct cache_set *c, - atomic_t *l, - atomic_t *r) -{ - int l_idx, r_idx, f_idx, b_idx; - bool ret = false; - - l_idx = fifo_idx(&(c)->journal.pin, (l)); - r_idx = fifo_idx(&(c)->journal.pin, (r)); - f_idx = (c)->journal.pin.front; - b_idx = (c)->journal.pin.back; - - if (l_idx > r_idx) - ret = true; - /* in case fifo back pointer is swapped */ - if (b_idx < f_idx) { - if (l_idx <= b_idx && r_idx >= f_idx) - ret = true; - else if (l_idx >= f_idx && r_idx <= b_idx) - ret = false; - } - - return ret; -} - static void bch_btree_leaf_dirty(struct btree *b, atomic_t *journal_ref) { struct bset *i = btree_bset_last(b); diff --git a/drivers/md/bcache/journal.h b/drivers/md/bcache/journal.h index 06b3eaab7d16..f2ea34d5f431 100644 --- a/drivers/md/bcache/journal.h +++ b/drivers/md/bcache/journal.h @@ -157,6 +157,10 @@ struct journal_device { }; #define BTREE_FLUSH_NR 8 + +#define journal_pin_cmp(c, l, r) \ + (fifo_idx(&(c)->journal.pin, (l)) > fifo_idx(&(c)->journal.pin, (r))) + #define JOURNAL_PIN 20000 #define journal_full(j) \ |