On Fri, Mar 5, 2021 at 9:46 AM Jia-Ju Bai <[email protected]> wrote: > > When the list of reloc_roots is empty, no error return code of > btrfs_recover_relocation() is assigned. > To fix this bug, err is assigned with -ENOENT as error return code.
No, there isn't any such bug. If there are no reloc roots, it means there's no relocation to resume, in which case err is already 0 and we therefore return 0. By setting err to -ENOENT, that will cause a mount failure on any fs that does not have relocation to resume. You could have tested this simply by doing: $ mkfs.btrfs -f /dev/sdc $ mount /dev/sdc /mnt/sdc mount: /mnt/sdc: mount(2) system call failed: No such file or directory. It's always a good idea to test patches, even if we are very comfortable with the code they are touching... Thanks. > > Reported-by: TOTE Robot <[email protected]> > Signed-off-by: Jia-Ju Bai <[email protected]> > --- > fs/btrfs/relocation.c | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/fs/btrfs/relocation.c b/fs/btrfs/relocation.c > index 232d5da7b7be..631b672a852f 100644 > --- a/fs/btrfs/relocation.c > +++ b/fs/btrfs/relocation.c > @@ -3817,8 +3817,10 @@ int btrfs_recover_relocation(struct btrfs_root *root) > } > btrfs_release_path(path); > > - if (list_empty(&reloc_roots)) > + if (list_empty(&reloc_roots)) { > + err = -ENOENT; > goto out; > + } > > rc = alloc_reloc_control(fs_info); > if (!rc) { > -- > 2.17.1 > -- Filipe David Manana, “Whether you think you can, or you think you can't — you're right.”

