From: Anand Jain <anand.jain@oracle.com>
To: linux-btrfs@vger.kernel.org
Subject: [PATCH 10/11] Btrfs-progs: accommodate different layout for printing subvol list
Date: Thu, 10 Jan 2013 19:41:22 +0800 [thread overview]
Message-ID: <1357818083-15531-11-git-send-email-anand.jain@oracle.com> (raw)
In-Reply-To: <1357818083-15531-1-git-send-email-anand.jain@oracle.com>
Currently we have name prefix (default) and table format to print
the output of subvol list. Just these two formats does not cater
to all the needs, for eg. the up coming show sub-command need a
way to display all the known information of the given subvol.
This patch will provide a way to extend the printing to other
formats.
Signed-off-by: Anand Jain <anand.jain@oracle.com>
---
btrfs-list.c | 26 +++++++++++++++-----------
btrfs-list.h | 3 +++
cmds-subvolume.c | 23 ++++++++++++++++++++---
3 files changed, 38 insertions(+), 14 deletions(-)
diff --git a/btrfs-list.c b/btrfs-list.c
index 8581762..844788b 100644
--- a/btrfs-list.c
+++ b/btrfs-list.c
@@ -54,12 +54,12 @@ struct {
{
.name = "ID",
.column_name = "ID",
- .need_print = 1,
+ .need_print = 0,
},
{
.name = "gen",
.column_name = "Gen",
- .need_print = 1,
+ .need_print = 0,
},
{
.name = "cgen",
@@ -74,7 +74,7 @@ struct {
{
.name = "top level",
.column_name = "Top Level",
- .need_print = 1,
+ .need_print = 0,
},
{
.name = "otime",
@@ -94,7 +94,7 @@ struct {
{
.name = "path",
.column_name = "Path",
- .need_print = 1,
+ .need_print = 0,
},
{
.name = NULL,
@@ -1414,21 +1414,25 @@ static void print_all_volume_info_tab_head()
}
static void print_all_volume_info(struct root_lookup *sorted_tree,
- int is_tab_result)
+ int layout)
{
struct rb_node *n;
struct root_info *entry;
- if (is_tab_result)
+ if (layout == BTRFS_LIST_LAYOUT_TABLE)
print_all_volume_info_tab_head();
n = rb_first(&sorted_tree->root);
while (n) {
entry = rb_entry(n, struct root_info, sort_node);
- if (is_tab_result)
- print_single_volume_info_table(entry);
- else
+ switch (layout) {
+ case BTRFS_LIST_LAYOUT_DEFAULT:
print_single_volume_info_default(entry);
+ break;
+ case BTRFS_LIST_LAYOUT_TABLE:
+ print_single_volume_info_table(entry);
+ break;
+ }
n = rb_next(n);
}
}
@@ -1454,7 +1458,7 @@ int btrfs_list_subvols(int fd, struct root_lookup *root_lookup)
int btrfs_list_subvols_print(int fd, struct btrfs_list_filter_set *filter_set,
struct btrfs_list_comparer_set *comp_set,
- int is_tab_result)
+ int layout)
{
struct root_lookup root_lookup;
struct root_lookup root_sort;
@@ -1466,7 +1470,7 @@ int btrfs_list_subvols_print(int fd, struct btrfs_list_filter_set *filter_set,
__filter_and_sort_subvol(&root_lookup, &root_sort, filter_set,
comp_set, fd);
- print_all_volume_info(&root_sort, is_tab_result);
+ print_all_volume_info(&root_sort, layout);
__free_all_subvolumn(&root_lookup);
return 0;
diff --git a/btrfs-list.h b/btrfs-list.h
index d71d2b0..5f3febd 100644
--- a/btrfs-list.h
+++ b/btrfs-list.h
@@ -18,6 +18,9 @@
#include "kerncompat.h"
+#define BTRFS_LIST_LAYOUT_DEFAULT 0
+#define BTRFS_LIST_LAYOUT_TABLE 1
+
/*
* one of these for each root we find.
*/
diff --git a/cmds-subvolume.c b/cmds-subvolume.c
index ee36463..dd677f7 100644
--- a/cmds-subvolume.c
+++ b/cmds-subvolume.c
@@ -410,8 +410,18 @@ static int cmd_subvol_list(int argc, char **argv)
BTRFS_LIST_FILTER_TOPID_EQUAL,
top_id);
- ret = btrfs_list_subvols_print(fd, filter_set, comparer_set,
- is_tab_result);
+ /* by default we shall print the following columns*/
+ btrfs_list_setup_print_column(BTRFS_LIST_OBJECTID);
+ btrfs_list_setup_print_column(BTRFS_LIST_GENERATION);
+ btrfs_list_setup_print_column(BTRFS_LIST_TOP_LEVEL);
+ btrfs_list_setup_print_column(BTRFS_LIST_PATH);
+
+ if (is_tab_result)
+ ret = btrfs_list_subvols_print(fd, filter_set, comparer_set,
+ BTRFS_LIST_LAYOUT_TABLE);
+ else
+ ret = btrfs_list_subvols_print(fd, filter_set, comparer_set,
+ BTRFS_LIST_LAYOUT_DEFAULT);
if (ret)
return 19;
return 0;
@@ -617,7 +627,14 @@ static int cmd_subvol_get_default(int argc, char **argv)
btrfs_list_setup_filter(&filter_set, BTRFS_LIST_FILTER_ROOTID,
default_id);
- ret = btrfs_list_subvols_print(fd, filter_set, NULL, 0);
+ /* by default we shall print the following columns*/
+ btrfs_list_setup_print_column(BTRFS_LIST_OBJECTID);
+ btrfs_list_setup_print_column(BTRFS_LIST_GENERATION);
+ btrfs_list_setup_print_column(BTRFS_LIST_TOP_LEVEL);
+ btrfs_list_setup_print_column(BTRFS_LIST_PATH);
+
+ ret = btrfs_list_subvols_print(fd, filter_set, NULL,
+ BTRFS_LIST_LAYOUT_DEFAULT);
if (ret)
return 19;
return 0;
--
1.7.1
next prev parent reply other threads:[~2013-01-10 11:35 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-12-28 3:12 [PATCH 0/8 v2] add show command to the subvol sub command Anand jain
2012-12-28 3:12 ` [PATCH 1/8] Btrfs-progs: move open_file_or_dir() to utils.c Anand jain
2012-12-28 3:12 ` [PATCH 2/8] Btrfs-progs: Move printing outside of btrfs_list_subvols Anand jain
2012-12-28 3:12 ` [PATCH 3/8] Btrfs-progs: add parent uuid for snapshots Anand jain
2012-12-28 3:12 ` [PATCH 4/8] Btrfs-progs: move struct root_info to btrfs-list.h Anand jain
2012-12-28 3:12 ` [PATCH 5/8] Btrfs-progs: function to get root_info of a subvol Anand jain
2012-12-28 3:13 ` [PATCH 6/8] Btrfs-progs: provide method to check if filter is set Anand jain
2012-12-28 3:13 ` [PATCH 7/8] Btrfs-progs: add method to filter snapshots by parent uuid Anand jain
2012-12-28 3:13 ` [PATCH 8/8] Btrfs-progs: add show command to display detailed information about the subvol Anand jain
2013-01-10 11:41 ` [PATCH 00/11 V3] add show command to the subvol sub command Anand Jain
2013-01-10 11:41 ` [PATCH 01/11] Btrfs-progs: move open_file_or_dir() to utils.c Anand Jain
2013-01-10 11:41 ` [PATCH 02/11] Btrfs-progs: Move printing outside of btrfs_list_subvols Anand Jain
2013-01-10 11:41 ` [PATCH 03/11] Btrfs-progs: add parent uuid for snapshots Anand Jain
2013-01-10 11:41 ` [PATCH 04/11] Btrfs-progs: move struct root_info to btrfs-list.h Anand Jain
2013-01-10 11:41 ` [PATCH 05/11] Btrfs-progs: function to get root_info of a subvol Anand Jain
2013-01-10 11:41 ` [PATCH 06/11] Btrfs-progs: provide method to check if filter is set Anand Jain
2013-01-10 11:41 ` [PATCH 07/11] Btrfs-progs: add method to filter snapshots by parent uuid Anand Jain
2013-01-10 11:41 ` [PATCH 08/11] Btrfs-progs: put find_mount_root() in commands.h Anand Jain
2013-01-10 11:41 ` [PATCH 09/11] Btrfs-progs: maintain similar case in heading prefix Anand Jain
2013-01-10 11:41 ` Anand Jain [this message]
2013-01-10 11:41 ` [PATCH 11/11] Btrfs-progs: add show to display all known parameters of the given subvol Anand Jain
2013-01-14 4:04 ` [PATCH 00/11 V3] add show command to the subvol sub command Anand Jain
2013-01-14 18:25 ` Goffredo Baroncelli
2013-01-15 8:05 ` Anand Jain
2013-01-15 18:37 ` Goffredo Baroncelli
2013-01-21 0:19 ` Gene Czarcinski
2013-01-21 10:35 ` Anand Jain
2013-01-23 8:30 ` Anand Jain
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1357818083-15531-11-git-send-email-anand.jain@oracle.com \
--to=anand.jain@oracle.com \
--cc=linux-btrfs@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).