From: Kari Argillander <kari.argillander@gmail.com>
To: Christoph Hellwig <hch@lst.de>
Cc: "Konstantin Komarov" <almaz.alexandrovich@paragon-software.com>,
ntfs3@lists.linux.dev, linux-kernel@vger.kernel.org,
linux-fsdevel@vger.kernel.org, "Pali Rohár" <pali@kernel.org>,
"Matthew Wilcox" <willy@infradead.org>
Subject: Re: [RFC PATCH 1/4] fs/ntfs3: Use new api for mounting
Date: Mon, 16 Aug 2021 16:14:17 +0300 [thread overview]
Message-ID: <20210816131417.4mix6s2nzuxhkh53@kari-VirtualBox> (raw)
In-Reply-To: <20210816123619.GB17355@lst.de>
Thank you for taking time to review. I really appreciated it.
On Mon, Aug 16, 2021 at 02:36:19PM +0200, Christoph Hellwig wrote:
> > +/*
> > + * ntfs_load_nls
> > + *
>
> No need to state the function name here.
This is current way of doing this in fs/ntfs3. I just like that things
are same kind in one driver. I agree that this may not be good way.
> > + * Load nls table or if @nls is utf8 then return NULL because
> > + * nls=utf8 is totally broken.
> > + */
> > +static struct nls_table *ntfs_load_nls(char *nls)
> > +{
> > + struct nls_table *ret;
> > +
> > + if (!nls)
> > + return ERR_PTR(-EINVAL);
> > + if (strcmp(nls, "utf8"))
> > + return NULL;
> > + if (strcmp(nls, CONFIG_NLS_DEFAULT))
> > + return load_nls_default();
> > +
> > + ret = load_nls(nls);
> > + if (!ret)
> > + return ERR_PTR(-EINVAL);
> > +
> > + return ret;
> > +}
>
> This looks like something quite generic and not file system specific.
> But I haven't found time to look at the series from Pali how this all
> fits together.
It is quite generic I agree. Pali's series not implemeted any new way
doing this thing. In many cases Pali uses just load_nls and not
load_nls_default. This function basically use that if possible. It seems
that load_nls_default does not need error path so that's why it is nicer
to use.
One though is to implement api function load_nls_or_utf8(). Then we do not
need to test this utf8 stuff in all places.
> > +// clang-format off
>
> Please don't use C++ comments. And we also should not put weird
> formatter annotations into the kernel source anyway.
This is just a way ntfs3 do this but I agree totally and will take this
off. I did not even like it myself.
> > +static void ntfs_default_options(struct ntfs_mount_options *opts)
> > {
> > opts->fs_uid = current_uid();
> > opts->fs_gid = current_gid();
> > + opts->fs_fmask_inv = ~current_umask();
> > + opts->fs_dmask_inv = ~current_umask();
> > + opts->nls = ntfs_load_nls(CONFIG_NLS_DEFAULT);
> > +}
>
> This function seems pretty pointless with a single trivial caller.
Yeah it is just because then no comment needed and other reason was that
I can but this closer to ntfs_fs_parse_param() so that when reading code
all parameter code is one place.
> > +static int ntfs_fs_parse_param(struct fs_context *fc, struct fs_parameter *param)
>
> Please avoid the overly long line.
Thanks will fix.
>
> > + break;
> > + case Opt_showmeta:
> > + opts->showmeta = result.negated ? 0 : 1;
> > + break;
> > + case Opt_nls:
> > + unload_nls(opts->nls);
> > +
> > + opts->nls = ntfs_load_nls(param->string);
> > + if (IS_ERR(opts->nls)) {
> > + return invalf(fc, "ntfs3: Cannot load nls %s",
> > + param->string);
> > }
>
> So instead of unloading here, why not set keep a copy of the string
> in the mount options structure and only load the actual table after
> option parsing has finished?
I did actually do this first but then I test this way and code get lot
cleaner. But I can totally change it back to "string loading".
>
> > + struct ntfs_mount_options *new_opts = fc->s_fs_info;
>
> Does this rely on the mount_options being the first member in struct
> ntfs_sb_info? If so that is a landmine for future changes.
>
> > +/*
> > + * Set up the filesystem mount context.
> > + */
> > +static int ntfs_init_fs_context(struct fs_context *fc)
> > +{
> > + struct ntfs_sb_info *sbi;
> > +
> > + sbi = ntfs_zalloc(sizeof(struct ntfs_sb_info));
>
> Not related to your patch, but why does ntfs3 have kmalloc wrappers
> like this?
I do not know. I actually also suggested changing this (link). This might
even confuse some static analyzer tools.
https://lore.kernel.org/linux-fsdevel/20210103231755.bcmyalz3maq4ama2@kari-VirtualBox/
next prev parent reply other threads:[~2021-08-16 13:14 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-08-16 2:46 Kari Argillander
2021-08-16 2:47 ` [RFC PATCH 1/4] fs/ntfs3: Use new api for mounting Kari Argillander
2021-08-16 3:23 ` Kari Argillander
2021-08-16 12:17 ` Christoph Hellwig
2021-08-16 13:19 ` Kari Argillander
2021-08-16 12:36 ` Christoph Hellwig
2021-08-16 13:14 ` Kari Argillander [this message]
2021-08-16 13:24 ` Pali Rohár
2021-08-16 13:40 ` Christian Brauner
2021-08-16 13:59 ` Kari Argillander
2021-08-16 14:21 ` Christian Brauner
2021-08-16 2:47 ` [RFC PATCH 2/4] fs/ntfs3: Remove unnecesarry mount option noatime Kari Argillander
2021-08-16 12:18 ` Christoph Hellwig
2021-08-16 12:45 ` Kari Argillander
2021-08-16 2:47 ` [RFC PATCH 3/4] fs/ntfs3: Make mount option nohidden more universal Kari Argillander
2021-08-16 2:47 ` [RFC PATCH 4/4] fs/ntfs3: Add iocharset= mount option as alias for nls= Kari Argillander
2021-08-16 3:03 ` [RFC PATCH 0/4] fs/ntfs3: Use new mount api and change some opts Kari Argillander
2021-08-16 12:27 ` your mail Christoph Hellwig
2021-08-16 12:48 ` [RFC PATCH 0/4] fs/ntfs3: Use new mount api and change some opts Kari Argillander
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=20210816131417.4mix6s2nzuxhkh53@kari-VirtualBox \
--to=kari.argillander@gmail.com \
--cc=almaz.alexandrovich@paragon-software.com \
--cc=hch@lst.de \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=ntfs3@lists.linux.dev \
--cc=pali@kernel.org \
--cc=willy@infradead.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.