From: Dave Chinner <david@fromorbit.com>
To: xfs@oss.sgi.com
Subject: [PATCH] db: limit AGFL bno array printing
Date: Fri, 13 May 2016 11:40:03 +1000 [thread overview]
Message-ID: <1463103603-14610-1-git-send-email-david@fromorbit.com> (raw)
From: Dave Chinner <dchinner@redhat.com>
When asking for a single agfl entry such as:
# xfs_db -c "agfl 0" -c "p bno[1]" /dev/ram0
bno[1] = 1:6 2:7 3:8 4:null .....
The result should be just the single entry being asked for.
Currently this outputs the entire remainder of the array starting at
the given index. This makes it difficult to extract single entry
values.
This occurs because the printing of a flat array of number types
does not take into account the range that is specified on the
command line, which is held in fl->low and fl->high. To make this
work for flat arrays of number types (print function fp_num), change
print_flist() to limit the count of values to be emitted to the
range specified. This now gives:
# xfs_db -c "agfl 0" -c "p bno[1-2]" /dev/ram0
bno[1-2] = 1:6 2:7
To further simplify external parsing of single entry values, if only
a single value is requested from the array of fp_num type, don't
print the array index - it's already known. Hence:
# xfs_db -c "agfl 0" -c "p bno[1]" /dev/ram0
bno[1] = 6
This change will take effect on all types of flat number arrays that
are printed. e.g. the range limiting will work for things like the
AGI unlinked list arrays.
Signed-off-by: Dave Chinner <dchinner@redhat.com>
---
db/fprint.c | 2 +-
db/print.c | 7 +++++--
2 files changed, 6 insertions(+), 3 deletions(-)
diff --git a/db/fprint.c b/db/fprint.c
index f2b3794..fd7e7f4 100644
--- a/db/fprint.c
+++ b/db/fprint.c
@@ -93,7 +93,7 @@ fp_num(
val == -1LL : val == ((1LL << size) - 1LL);
if ((arg & FTARG_SKIPNULL) && isnull)
continue;
- if (array)
+ if (array && count > 1)
dbprintf("%d:", i + base);
if ((arg & FTARG_DONULL) && isnull)
dbprintf(_("null"));
diff --git a/db/print.c b/db/print.c
index 3ff2548..998daf4 100644
--- a/db/print.c
+++ b/db/print.c
@@ -107,6 +107,7 @@ print_flist_1(
const ftattr_t *fa;
flist_t *fl;
int low;
+ int count;
int neednl;
char **pfx;
@@ -139,10 +140,12 @@ print_flist_1(
low = fl->low;
else
low = 0;
+ count = fcount(f, iocur_top->data, parentoff);
+ if (fl->flags & FL_OKHIGH)
+ count = min(count, fl->high - low + 1);
if (fa->prfunc) {
neednl = fa->prfunc(iocur_top->data, fl->offset,
- fcount(f, iocur_top->data, parentoff),
- fa->fmtstr,
+ count, fa->fmtstr,
fsize(f, iocur_top->data, parentoff, 0),
fa->arg, low,
(f->flags & FLD_ARRAY) != 0);
--
2.8.0.rc3
_______________________________________________
xfs mailing list
xfs@oss.sgi.com
http://oss.sgi.com/mailman/listinfo/xfs
next reply other threads:[~2016-05-13 1:40 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-05-13 1:40 Dave Chinner [this message]
2016-05-13 10:13 ` [PATCH] db: limit AGFL bno array printing Carlos Maiolino
2016-05-23 14:46 ` Christoph Hellwig
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=1463103603-14610-1-git-send-email-david@fromorbit.com \
--to=david@fromorbit.com \
--cc=xfs@oss.sgi.com \
/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