From: Jan Kara <jack@suse.cz>
To: Andrew Morton <akpm@linux-foundation.org>
Cc: Alexander Kuleshov <kuleshovmail@gmail.com>,
Tejun Heo <tj@kernel.org>, Jan Kara <jack@suse.cz>,
linux-mm@kvack.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] mm/backing-dev: Check return value of the debugfs_create_dir()
Date: Wed, 26 Aug 2015 11:23:02 +0200 [thread overview]
Message-ID: <20150826092302.GB3871@quack.suse.cz> (raw)
In-Reply-To: <20150825140858.8185db77fed42cf5df5faeb5@linux-foundation.org>
On Tue 25-08-15 14:08:58, Andrew Morton wrote:
> On Tue, 25 Aug 2015 13:54:23 +0600 Alexander Kuleshov <kuleshovmail@gmail.com> wrote:
>
> > The debugfs_create_dir() function may fail and return error. If the
> > root directory not created, we can't create anything inside it. This
> > patch adds check for this case.
> >
> > ...
> >
> > --- a/mm/backing-dev.c
> > +++ b/mm/backing-dev.c
> > @@ -117,15 +117,21 @@ static const struct file_operations bdi_debug_stats_fops = {
> >
> > static void bdi_debug_register(struct backing_dev_info *bdi, const char *name)
> > {
> > - bdi->debug_dir = debugfs_create_dir(name, bdi_debug_root);
> > - bdi->debug_stats = debugfs_create_file("stats", 0444, bdi->debug_dir,
> > - bdi, &bdi_debug_stats_fops);
> > + if (bdi_debug_root) {
> > + bdi->debug_dir = debugfs_create_dir(name, bdi_debug_root);
> > + if (bdi->debug_dir)
> > + bdi->debug_stats = debugfs_create_file("stats", 0444,
> > + bdi->debug_dir, bdi,
> > + &bdi_debug_stats_fops);
> > + }
>
> If debugfs_create_dir() fails, debugfs_create_file() will go ahead and
> attempt to create the debugfs file in the debugfs root directory:
>
> : static struct dentry *start_creating(const char *name, struct dentry *parent)
> : {
> : ...
> : /* If the parent is not specified, we create it in the root.
> : * We need the root dentry to do this, which is in the super
> : * block. A pointer to that is in the struct vfsmount that we
> : * have around.
> : */
> : if (!parent)
> : parent = debugfs_mount->mnt_root;
>
> I'm not sure that this is very useful behaviour, and putting the files
> in the wrong place is a very obscure way of informing the user that
> debugfs_create_dir() failed :(
But this patch actually makes sure that we don't call debugfs_create_dir()
and debugfs_create_file() with parent == NULL so this patch avoids creation
of entries in debugfs root. So IMHO it really improves the situation. And I
agree with you that falling back to debugfs root is just broken...
> I don't think it's worth making little changes such as this - handling
> debugfs failures needs a deeper rethink.
Well, handling debugfs failures like in this patch is the right way to go,
isn't it? Or what else would you imagine than checking for errors and
bailing out instead of trying to create entries in non-existent dirs?
Honza
--
Jan Kara <jack@suse.com>
SUSE Labs, CR
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
next prev parent reply other threads:[~2015-08-26 9:23 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-08-25 7:54 Alexander Kuleshov
2015-08-25 8:32 ` Jan Kara
2015-08-25 21:08 ` Andrew Morton
2015-08-26 9:23 ` Jan Kara [this message]
2015-08-26 10:11 ` Alexander Kuleshov
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=20150826092302.GB3871@quack.suse.cz \
--to=jack@suse.cz \
--cc=akpm@linux-foundation.org \
--cc=kuleshovmail@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=tj@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