Skip to content

Commit

Permalink
Btrfs-progs: fix to make list specified directory's subvolumes work
Browse files Browse the repository at this point in the history
Steps to reproduce:
 # mkfs.btrfs -f /dev/sda8
 # mount /dev/sda8 /mnt
 # mkdir /mnt/subvolumes
 # btrfs sub create /mnt/subvolumes/subv1
 # btrfs sub create /mnt/subvolumes/subv1/subv1.1
 # btrfs sub list -o /mnt/subvolumes/subv1   <----we did not list anything

The problem is that we don't set @top_id right, fix it.

Reported-by: Alex <alex@bpmit.com>
Signed-off-by: Wang Shilong <wangsl.fnst@cn.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.cz>
Signed-off-by: Chris Mason <clm@fb.com>
  • Loading branch information
Wang Shilong authored and masoncl committed Jan 31, 2014
1 parent 62d0245 commit 4f5ebb3
Showing 1 changed file with 4 additions and 9 deletions.
13 changes: 4 additions & 9 deletions btrfs-list.c
Original file line number Diff line number Diff line change
Expand Up @@ -578,23 +578,18 @@ static int resolve_root(struct root_lookup *rl, struct root_info *ri,
full_path = strdup(found->path);
len = add_len;
}
if (!ri->top_id)
ri->top_id = found->ref_tree;

next = found->ref_tree;

if (next == top_id) {
ri->top_id = top_id;
if (next == top_id)
break;
}

/*
* if the ref_tree = BTRFS_FS_TREE_OBJECTID,
* we are at the top
*/
if (next == BTRFS_FS_TREE_OBJECTID) {
ri->top_id = next;
if (next == BTRFS_FS_TREE_OBJECTID)
break;
}

/*
* if the ref_tree wasn't in our tree of roots, the
* subvolume was deleted.
Expand Down

0 comments on commit 4f5ebb3

Please sign in to comment.