]> git.baikalelectronics.ru Git - kernel.git/commit
Btrfs: fix btrfs_search_slot_for_read backwards iteration
authorFilipe David Borba Manana <fdmanana@gmail.com>
Sat, 11 Jan 2014 21:28:54 +0000 (21:28 +0000)
committerChris Mason <clm@fb.com>
Wed, 29 Jan 2014 15:06:28 +0000 (07:06 -0800)
commita09baaed3d45e78bf22ecc56e088b17428a5d591
treec5955ef322a2034945408f873c0e6fa55af4e281
parentc1e1259a86779f11eff372504c0177328ae697aa
Btrfs: fix btrfs_search_slot_for_read backwards iteration

If the current path's leaf slot is 0, we do search for the previous
leaf (via btrfs_prev_leaf) and set the new path's leaf slot to a
value corresponding to the number of items - 1 of the former leaf.
Fix this by using the slot set by btrfs_prev_leaf, decrementing it
by 1 if it's equal to the leaf's number of items.

Use of btrfs_search_slot_for_read() for backward iteration is used in
particular by the send feature, which could miss items when the input
leaf has less items than its previous leaf.

This could be reproduced by running btrfs/007 from xfstests in a loop.

Signed-off-by: Filipe David Borba Manana <fdmanana@gmail.com>
Signed-off-by: Chris Mason <clm@fb.com>
fs/btrfs/ctree.c