On 11/18/19 8:28 AM, Coly Li wrote: > On 2019/11/13 4:03 下午, Coly Li wrote: >> Fifo structure journal.pin is implemented by a cycle buffer, if the back >> index reaches highest location of the cycle buffer, it will be swapped >> to 0. Once the swapping happens, it means a smaller fifo index might be >> associated to a newer journal entry. So the btree node with oldest >> journal entry won't be selected in bch_btree_leaf_dirty() to reference >> the dirty B+tree leaf node. This problem may cause bcache journal won't >> protect unflushed oldest B+tree dirty leaf node in power failure, and >> this B+tree leaf node is possible to beinconsistent after reboot from >> power failure. >> >> This patch fixes the fifo index comparing logic in journal_pin_cmp(), >> to avoid potential corrupted B+tree leaf node when the back index of >> journal pin is swapped. >> >> Signed-off-by: Coly Li <colyli@xxxxxxx> > > Hi Jens, > > 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. Sure, done. -- Jens Axboe