summaryrefslogtreecommitdiffstats
path: root/drivers/md
diff options
context:
space:
mode:
authorJens Axboe <axboe@kernel.dk>2019-11-18 16:35:47 +0100
committerJens Axboe <axboe@kernel.dk>2019-11-18 16:35:47 +0100
commit00b89892c869f34528deca957b10d1468c4e8b38 (patch)
tree6cff935bea03f4c7ad81a786b200dbe33535225c /drivers/md
parentMerge branch 'md-next' of git://git.kernel.org/pub/scm/linux/kernel/git/song/... (diff)
downloadlinux-00b89892c869f34528deca957b10d1468c4e8b38.tar.xz
linux-00b89892c869f34528deca957b10d1468c4e8b38.zip
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.c26
-rw-r--r--drivers/md/bcache/journal.h4
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) \