diff options
author | David Sterba <dsterba@suse.cz> | 2014-03-28 13:39:57 +0100 |
---|---|---|
committer | Chris Mason <clm@fb.com> | 2014-04-04 17:54:35 -0700 |
commit | f9f9ee18a5a2e2a9c847efbb9299ec5940fc36e6 (patch) | |
tree | bd7a27855730f6fdefa530339fadb88782656427 /btrfs-list.c | |
parent | 4724d7b07553ad27429bb2d61de1c5e8d4d7613d (diff) | |
download | btrfs-progs-f9f9ee18a5a2e2a9c847efbb9299ec5940fc36e6.tar.gz |
btrfs-progs: fix listing deleted subvolumes
The real check whether to show deleted or live subvolumes was skipped if
just '-d' was specified without other filters. The 'deleted' filter was
not accounted.
It is now handled as a normal filter, that additionally sets the only_delete
global status in order to be processed before any other filters in
filter_root().
Signed-off-by: David Sterba <dsterba@suse.cz>
Signed-off-by: Chris Mason <clm@fb.com>
Diffstat (limited to 'btrfs-list.c')
-rw-r--r-- | btrfs-list.c | 10 |
1 files changed, 4 insertions, 6 deletions
diff --git a/btrfs-list.c b/btrfs-list.c index 912b27c..542dfe0 100644 --- a/btrfs-list.c +++ b/btrfs-list.c @@ -1216,11 +1216,6 @@ int btrfs_list_setup_filter(struct btrfs_list_filter_set **filter_set, BUG_ON(filter >= BTRFS_LIST_FILTER_MAX); BUG_ON(set->nfilters > set->total); - if (filter == BTRFS_LIST_FILTER_DELETED) { - set->only_deleted = 1; - return 0; - } - if (set->nfilters == set->total) { size = set->total + BTRFS_LIST_NFILTERS_INCREASE; size = sizeof(*set) + size * sizeof(struct btrfs_list_filter); @@ -1239,6 +1234,9 @@ int btrfs_list_setup_filter(struct btrfs_list_filter_set **filter_set, BUG_ON(set->filters[set->nfilters].filter_func); + if (filter == BTRFS_LIST_FILTER_DELETED) + set->only_deleted = 1; + set->filters[set->nfilters].filter_func = all_filter_funcs[filter]; set->filters[set->nfilters].data = data; set->nfilters++; @@ -1250,7 +1248,7 @@ static int filter_root(struct root_info *ri, { int i, ret; - if (!set || !set->nfilters) + if (!set) return 1; if (set->only_deleted && !ri->deleted) |