summaryrefslogtreecommitdiff
path: root/btrfs-list.c
diff options
context:
space:
mode:
authorDavid Sterba <dsterba@suse.cz>2014-03-28 13:39:57 +0100
committerChris Mason <clm@fb.com>2014-04-04 17:54:35 -0700
commitf9f9ee18a5a2e2a9c847efbb9299ec5940fc36e6 (patch)
treebd7a27855730f6fdefa530339fadb88782656427 /btrfs-list.c
parent4724d7b07553ad27429bb2d61de1c5e8d4d7613d (diff)
downloadbtrfs-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.c10
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)