FROMGIT: f2fs v2: factor out discard_cmd usage from general rb_tree use

I found a bug in the previous version and this patch fixes the gap from
upstream version.

Fixes: fcc385fd44 ("FROMGIT: f2fs: factor out discard_cmd usage from general rb_tree use")
Signed-off-by: Jaegeuk Kim <jaegeuk@google.com>
(cherry picked from commit e39836183be8
https: //git.kernel.org/pub/scm/linux/kernel/git/jaegeuk/f2fs.git dev)
Change-Id: I4dbfb9f1f2cc956685a7c4de5fcfbba705c30cfb
This commit is contained in:
Jaegeuk Kim
2023-03-24 10:09:28 -07:00
parent 6e55119ce0
commit 3d44f9b49e

View File

@@ -1395,6 +1395,7 @@ static void __update_discard_tree_range(struct f2fs_sb_info *sbi,
while (1) {
struct rb_node *node;
bool merged = false;
struct discard_cmd *tdc = NULL;
if (prev_dc) {
@@ -1423,7 +1424,7 @@ static void __update_discard_tree_range(struct f2fs_sb_info *sbi,
__relocate_discard_cmd(dcc, prev_dc);
di = prev_dc->di;
tdc = prev_dc;
goto next;
merged = true;
}
if (next_dc && next_dc->state == D_PREP &&
@@ -1437,10 +1438,12 @@ static void __update_discard_tree_range(struct f2fs_sb_info *sbi,
__relocate_discard_cmd(dcc, next_dc);
if (tdc)
__remove_discard_cmd(sbi, tdc);
goto next;
merged = true;
}
__insert_discard_cmd(sbi, bdev, di.lstart, di.start, di.len);
if (!merged)
__insert_discard_cmd(sbi, bdev,
di.lstart, di.start, di.len);
next:
prev_dc = next_dc;
if (!prev_dc)