Commit 00b89892 authored by Jens Axboe's avatar Jens Axboe
Browse files

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 c0e0954e.

Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
parent 97ab474c
Loading
Loading
Loading
Loading
+0 −26
Original line number Diff line number Diff line
@@ -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);
+4 −0
Original line number Diff line number Diff line
@@ -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)						\