From: David Sterba <dsterba@suse.cz>
To: Nikolay Borisov <nborisov@suse.com>
Cc: Josef Bacik <josef@toxicpanda.com>,
linux-btrfs@vger.kernel.org, kernel-team@fb.com
Subject: Re: [PATCH 2/2] btrfs: pretty print leaked root name
Date: Mon, 24 Aug 2020 14:46:04 +0200 [thread overview]
Message-ID: <20200824124604.GJ2026@twin.jikos.cz> (raw)
In-Reply-To: <d98bb04e-1bcf-80c7-26ae-e91f3ecfd818@suse.com>
On Fri, Aug 21, 2020 at 10:35:38AM +0300, Nikolay Borisov wrote:
>
>
> On 20.08.20 г. 23:00 ч., Josef Bacik wrote:
> > I'm a actual human being so am incapable of converting u64 to s64 in my
> > head, so add a helper to get the pretty name of a root objectid and use
> > that helper to spit out the name for any special roots for leaked roots,
> > so I don't have to scratch my head and figure out which root I messed up
> > the refs for.
> >
> > Signed-off-by: Josef Bacik <josef@toxicpanda.com>
> > ---
> > fs/btrfs/disk-io.c | 8 +++++---
> > fs/btrfs/print-tree.c | 37 +++++++++++++++++++++++++++++++++++++
> > fs/btrfs/print-tree.h | 1 +
> > 3 files changed, 43 insertions(+), 3 deletions(-)
> >
> > diff --git a/fs/btrfs/disk-io.c b/fs/btrfs/disk-io.c
> > index ac6d6fddd5f4..a7358e0f59de 100644
> > --- a/fs/btrfs/disk-io.c
> > +++ b/fs/btrfs/disk-io.c
> > @@ -1506,11 +1506,13 @@ void btrfs_check_leaked_roots(struct btrfs_fs_info *fs_info)
> > struct btrfs_root *root;
> >
> > while (!list_empty(&fs_info->allocated_roots)) {
> > + const char *name = btrfs_root_name(root->root_key.objectid);
> > +
> > root = list_first_entry(&fs_info->allocated_roots,
> > struct btrfs_root, leak_list);
> > - btrfs_err(fs_info, "leaked root %llu-%llu refcount %d",
> > - root->root_key.objectid, root->root_key.offset,
> > - refcount_read(&root->refs));
> > + btrfs_err(fs_info, "leaked root %s%lld-%llu refcount %d",
>
> nit: Won't this string result in some rather awkward looking strings,
> such as:
>
> "leaked root ROOT_TREE<objectid>-<offset>..." i.e shouldn't the
> (objectid,offset) pair be marked with parentheses?
We need to print either string name or value, and in one go. Unlike
in progs, I'd rather avoid split stings in kernel and using
pr_cont/KERN_CONT.
The option is see is to supply a buffer to the pretty printer that would
be used in case we need the numerical id. Like:
while (allocated_roots) {
char root_name[24];
...
btrfs_err(..., "leaked root %s ...",
get_root_name(id, root_name));
}
where
char *get_root_name(u64 id, char *buf) {
if (numeric root) {
sprintf(buf, "%llu", ud);
return buf;
}
return <root name from the table>;
}
next prev parent reply other threads:[~2020-08-24 12:47 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-08-20 20:00 [PATCH 0/2][v2] Some leaked root fixes Josef Bacik
2020-08-20 20:00 ` [PATCH 1/2] btrfs: free fs roots on failed mount Josef Bacik
2020-08-21 7:31 ` Nikolay Borisov
2020-08-21 13:59 ` Josef Bacik
2020-08-21 14:07 ` Nikolay Borisov
2020-08-20 20:00 ` [PATCH 2/2] btrfs: pretty print leaked root name Josef Bacik
2020-08-21 7:35 ` Nikolay Borisov
2020-08-21 10:13 ` David Sterba
2020-08-21 10:25 ` Nikolay Borisov
2020-08-21 14:00 ` Josef Bacik
2020-08-24 11:30 ` David Sterba
2020-08-24 12:46 ` David Sterba [this message]
-- strict thread matches above, loose matches on Subject: below --
2020-09-03 18:29 [PATCH 0/2][v3] Some leaked root fixes Josef Bacik
2020-09-03 18:29 ` [PATCH 2/2] btrfs: pretty print leaked root name Josef Bacik
2020-09-07 12:28 ` David Sterba
2020-09-09 7:37 ` David Sterba
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=20200824124604.GJ2026@twin.jikos.cz \
--to=dsterba@suse.cz \
--cc=josef@toxicpanda.com \
--cc=kernel-team@fb.com \
--cc=linux-btrfs@vger.kernel.org \
--cc=nborisov@suse.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