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 <dste...@suse.cz>
---
v2: previous version as wrong, the number of properly initialized filters did 
not
match the counter. don't make the only_deleted too quirky.

 btrfs-list.c |   10 ++++------
 1 files changed, 4 insertions(+), 6 deletions(-)

diff --git a/btrfs-list.c b/btrfs-list.c
index 912b27c3deca..542dfe0c1a20 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)
-- 
1.7.9

--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to