mirror of
https://github.com/versity/scoutfs.git
synced 2026-04-26 16:15:06 +00:00
Add print filters for remaining types.
Chris already added print filters for most common types, but omitted totl, indx, orphan, quota, and inode_index items. This adds those as well, completing the set. Signed-off-by: Auke Kok <auke.kok@versity.com>
This commit is contained in:
@@ -426,7 +426,8 @@ This option can be used to select which btrees are traversed. It is a comma-sepa
|
||||
.B "-i, --items ITEMS"
|
||||
This option can be used to choose which btree items are printed from the
|
||||
selected btree roots. It is a comma-separated list containing one or
|
||||
more of the following items: inode, xattr, dirent, symlink, backref, extent.
|
||||
more of the following items: inode, xattr, dirent, symlink, backref, extent,
|
||||
totl, indx, inoindex, orphan, quota.
|
||||
Default is all items.
|
||||
.TP
|
||||
.B "-S, --skip-likely-huge"
|
||||
|
||||
@@ -45,6 +45,11 @@ struct print_args {
|
||||
bool print_symlinks;
|
||||
bool print_backrefs;
|
||||
bool print_extents;
|
||||
bool print_totl;
|
||||
bool print_indx;
|
||||
bool print_inode_index;
|
||||
bool print_orphan;
|
||||
bool print_quota;
|
||||
};
|
||||
|
||||
static struct print_args print_args = {
|
||||
@@ -62,7 +67,12 @@ static struct print_args print_args = {
|
||||
.print_dirents = true,
|
||||
.print_symlinks = true,
|
||||
.print_backrefs = true,
|
||||
.print_extents = true
|
||||
.print_extents = true,
|
||||
.print_totl = true,
|
||||
.print_indx = true,
|
||||
.print_inode_index = true,
|
||||
.print_orphan = true,
|
||||
.print_quota = true
|
||||
};
|
||||
|
||||
static void print_block_header(struct scoutfs_block_header *hdr, int size)
|
||||
@@ -235,22 +245,37 @@ static print_func_t find_printer(u8 zone, u8 type, bool *suppress)
|
||||
{
|
||||
if (zone == SCOUTFS_INODE_INDEX_ZONE &&
|
||||
type >= SCOUTFS_INODE_INDEX_META_SEQ_TYPE &&
|
||||
type <= SCOUTFS_INODE_INDEX_DATA_SEQ_TYPE)
|
||||
type <= SCOUTFS_INODE_INDEX_DATA_SEQ_TYPE) {
|
||||
if (!print_args.print_inode_index)
|
||||
*suppress = true;
|
||||
return print_inode_index;
|
||||
|
||||
if (zone == SCOUTFS_ORPHAN_ZONE) {
|
||||
if (type == SCOUTFS_ORPHAN_TYPE)
|
||||
return print_orphan;
|
||||
}
|
||||
|
||||
if (zone == SCOUTFS_QUOTA_ZONE)
|
||||
if (zone == SCOUTFS_ORPHAN_ZONE) {
|
||||
if (type == SCOUTFS_ORPHAN_TYPE) {
|
||||
if (!print_args.print_orphan)
|
||||
*suppress = true;
|
||||
return print_orphan;
|
||||
}
|
||||
}
|
||||
|
||||
if (zone == SCOUTFS_QUOTA_ZONE) {
|
||||
if (!print_args.print_quota)
|
||||
*suppress = true;
|
||||
return print_quota;
|
||||
}
|
||||
|
||||
if (zone == SCOUTFS_XATTR_TOTL_ZONE)
|
||||
if (zone == SCOUTFS_XATTR_TOTL_ZONE) {
|
||||
if (!print_args.print_totl)
|
||||
*suppress = true;
|
||||
return print_xattr_totl;
|
||||
}
|
||||
|
||||
if (zone == SCOUTFS_XATTR_INDX_ZONE)
|
||||
if (zone == SCOUTFS_XATTR_INDX_ZONE) {
|
||||
if (!print_args.print_indx)
|
||||
*suppress = true;
|
||||
return print_xattr_indx;
|
||||
}
|
||||
|
||||
if (zone == SCOUTFS_FS_ZONE) {
|
||||
switch(type) {
|
||||
@@ -1244,16 +1269,26 @@ enum {
|
||||
DIRENT_OPT,
|
||||
SYMLINK_OPT,
|
||||
BACKREF_OPT,
|
||||
EXTENT_OPT
|
||||
EXTENT_OPT,
|
||||
TOTL_OPT,
|
||||
INDX_OPT,
|
||||
INOINDEX_OPT,
|
||||
ORPHAN_OPT,
|
||||
QUOTA_OPT
|
||||
};
|
||||
|
||||
static char *const item_tokens[] = {
|
||||
[INODE_OPT] = "inode",
|
||||
[XATTR_OPT] = "xattr",
|
||||
[DIRENT_OPT] = "dirent",
|
||||
[SYMLINK_OPT] = "symlink",
|
||||
[BACKREF_OPT] = "backref",
|
||||
[EXTENT_OPT] = "extent",
|
||||
[INODE_OPT] = "inode",
|
||||
[XATTR_OPT] = "xattr",
|
||||
[DIRENT_OPT] = "dirent",
|
||||
[SYMLINK_OPT] = "symlink",
|
||||
[BACKREF_OPT] = "backref",
|
||||
[EXTENT_OPT] = "extent",
|
||||
[TOTL_OPT] = "totl",
|
||||
[INDX_OPT] = "indx",
|
||||
[INOINDEX_OPT] = "inoindex",
|
||||
[ORPHAN_OPT] = "orphan",
|
||||
[QUOTA_OPT] = "quota",
|
||||
NULL
|
||||
};
|
||||
|
||||
@@ -1265,6 +1300,11 @@ static void clear_items(void)
|
||||
print_args.print_symlinks = false;
|
||||
print_args.print_backrefs = false;
|
||||
print_args.print_extents = false;
|
||||
print_args.print_totl = false;
|
||||
print_args.print_indx = false;
|
||||
print_args.print_inode_index = false;
|
||||
print_args.print_orphan = false;
|
||||
print_args.print_quota = false;
|
||||
}
|
||||
|
||||
static void clear_roots(void)
|
||||
@@ -1321,6 +1361,21 @@ static int parse_opt(int key, char *arg, struct argp_state *state)
|
||||
case EXTENT_OPT:
|
||||
args->print_extents = true;
|
||||
break;
|
||||
case TOTL_OPT:
|
||||
args->print_totl = true;
|
||||
break;
|
||||
case INDX_OPT:
|
||||
args->print_indx = true;
|
||||
break;
|
||||
case INOINDEX_OPT:
|
||||
args->print_inode_index = true;
|
||||
break;
|
||||
case ORPHAN_OPT:
|
||||
args->print_orphan = true;
|
||||
break;
|
||||
case QUOTA_OPT:
|
||||
args->print_quota = true;
|
||||
break;
|
||||
default:
|
||||
argp_usage(state);
|
||||
parse_err = true;
|
||||
@@ -1391,7 +1446,7 @@ static int parse_opt(int key, char *arg, struct argp_state *state)
|
||||
|
||||
static struct argp_option options[] = {
|
||||
{ "allocs", 'a', NULL, 0, "Print metadata and data alloc lists" },
|
||||
{ "items", 'i', "ITEMS", 0, "Item(s) to print (inode, xattr, dirent, symlink, backref, extent)" },
|
||||
{ "items", 'i', "ITEMS", 0, "Item(s) to print (inode, xattr, dirent, symlink, backref, extent, totl, indx, inoindex, orphan, quota)" },
|
||||
{ "roots", 'r', "ROOTS", 0, "Tree root(s) to walk (logs, srch, fs)" },
|
||||
{ "skip-likely-huge", 'S', NULL, 0, "Skip allocs, srch root and fs root to minimize output size" },
|
||||
{ NULL }
|
||||
|
||||
Reference in New Issue
Block a user