All of lore.kernel.org
 help / color / mirror / Atom feed
From: Kari Argillander <kari.argillander@gmail.com>
To: Konstantin Komarov <almaz.alexandrovich@paragon-software.com>,
	Christoph Hellwig <hch@lst.de>
Cc: 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>,
	"Christian Brauner" <christian.brauner@ubuntu.com>
Subject: Re: [PATCH v2 3/6] fs/ntfs3: Use new api for mounting
Date: Fri, 20 Aug 2021 00:53:15 +0300	[thread overview]
Message-ID: <20210819215315.uhst4ppwdbed65x7@kari-VirtualBox> (raw)
In-Reply-To: <20210819002633.689831-4-kari.argillander@gmail.com>

On Thu, Aug 19, 2021 at 03:26:30AM +0300, Kari Argillander wrote:
> We have now new mount api as described in Documentation/filesystems. We
> should use it as it gives us some benefits which are desribed here
> lore.kernel.org/linux-fsdevel/159646178122.1784947.11705396571718464082.stgit@warthog.procyon.org.uk/
> 
> Nls loading is changed a to load with string. This did make code also
> little cleaner.
> 
> Also try to use fsparam_flag_no as much as possible. This is just nice
> little touch and is not mandatory but it should not make any harm. It
> is just convenient that we can use example acl/noacl mount options.
> 
> Signed-off-by: Kari Argillander <kari.argillander@gmail.com>

I will send new patches when Komarov has take a look of these. I have
found some bugs and how to improve things. Please take a look below my
second comment.

>  fs/ntfs3/super.c   | 392 +++++++++++++++++++++++----------------------

> +static void ntfs_fs_free(struct fs_context *fc)
> +{
> +	struct ntfs_sb_info *sbi = fc->s_fs_info;
> +
> +	if (sbi)
> +		put_ntfs(sbi);
> +}
> +
> +static const struct fs_context_operations ntfs_context_ops = {
> +	.parse_param	= ntfs_fs_parse_param,
> +	.get_tree	= ntfs_fs_get_tree,
> +	.reconfigure	= ntfs_fs_reconfigure,
> +	.free		= ntfs_fs_free,
> +};
> +
> +static int ntfs_init_fs_context(struct fs_context *fc)
>  {
> -	return mount_bdev(fs_type, flags, dev_name, data, ntfs_fill_super);
> +	struct ntfs_sb_info *sbi;
> +
> +	sbi = ntfs_zalloc(sizeof(struct ntfs_sb_info));
> +	if (!sbi)
> +		return -ENOMEM;
> +
> +	/* Default options */
> +	sbi->options.fs_uid = current_uid();
> +	sbi->options.fs_gid = current_gid();
> +	sbi->options.fs_fmask_inv = ~current_umask();
> +	sbi->options.fs_dmask_inv = ~current_umask();
> +
> +	fc->s_fs_info = sbi;
> +	fc->ops = &ntfs_context_ops;
> +
> +	return 0;
>  }
 
In this code I did not like that we make whole new sbi everytime.
Especially because we do zalloc. So when we regonfigure then new sbi
is allocated just for options. I notice that example xfs does allocate
their "sbi" everytime. Then I notice that example squashfs allocate
just mount options.

I have impression that we should allocate sbi if it first time so I
did "between code". I would like to do things like they are intended
with api so can Christoph comment that is this "right" thing to do
and is there any draw backs which I should know.

static void ntfs_fs_free(struct fs_context *fc)
{
	struct ntfs_mount_options *opts = fc->fs_private;
	struct ntfs_sb_info *sbi = fc->s_fs_info;

	if (sbi)
		put_ntfs(sbi);

	if (opts)
		clear_mount_options(opts);
}

static int ntfs_init_fs_context(struct fs_context *fc)
{
	struct ntfs_mount_options *opts;
	struct ntfs_sb_info *sbi = NULL;

	fc->ops = &ntfs_context_ops;

	opts = ntfs_zalloc(sizeof(struct ntfs_mount_options));
	if (!opts)
		return -ENOMEM;

	/* Default options. */
	opts->fs_uid = current_uid();
	opts->fs_gid = current_gid();
	opts->fs_fmask_inv = ~current_umask();
	opts->fs_dmask_inv = ~current_umask();

	fc->fs_private = opts;

	/* No need to initialize sbi if we just reconf. */
	if (fc->purpose == FS_CONTEXT_FOR_RECONFIGURE)
		return 0;

	sbi = ntfs_zalloc(sizeof(struct ntfs_sb_info));
	if (!sbi) {
		ntfs_free(opts);
		return -ENOMEM;
	}

	mutex_init(&sbi->compress.mtx_lznt);
#ifdef CONFIG_NTFS3_LZX_XPRESS
	mutex_init(&sbi->compress.mtx_xpress);
	mutex_init(&sbi->compress.mtx_lzx);
#endif

	sbi->options = opts;
	fc->s_fs_info = sbi;

	return 0;
}

  parent reply	other threads:[~2021-08-19 21:53 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-08-19  0:26 [PATCH v2 0/6] fs/ntfs3: Use new mount api and change some opts Kari Argillander
2021-08-19  0:26 ` [PATCH v2 1/6] fs/ntfs3: Remove unnecesarry mount option noatime Kari Argillander
2021-08-24  7:58   ` Christoph Hellwig
2021-08-24 11:17   ` Christian Brauner
2021-08-19  0:26 ` [PATCH v2 2/6] fs/ntfs3: Remove unnecesarry remount flag handling Kari Argillander
2021-08-24  7:59   ` Christoph Hellwig
2021-08-24 11:17   ` Christian Brauner
2021-08-19  0:26 ` [PATCH v2 3/6] fs/ntfs3: Use new api for mounting Kari Argillander
2021-08-19  8:18   ` Pali Rohár
2021-08-19 10:01     ` Kari Argillander
2021-08-19 21:53   ` Kari Argillander [this message]
2021-08-24  8:03   ` Christoph Hellwig
2021-08-24  8:21     ` Kari Argillander
2021-08-27 18:44       ` Konstantin Komarov
2021-08-24 11:32   ` Christian Brauner
2021-08-24 14:13     ` Kari Argillander
2021-08-19  0:26 ` [PATCH v2 4/6] fs/ntfs3: Make mount option nohidden more universal Kari Argillander
2021-08-24  8:03   ` Christoph Hellwig
2021-08-24 11:16   ` Christian Brauner
2021-08-19  0:26 ` [PATCH v2 5/6] fs/ntfs3: Add iocharset= mount option as alias for nls= Kari Argillander
2021-08-19  8:26   ` Pali Rohár
2021-08-19  9:45     ` Kari Argillander
2021-08-19  9:55       ` Pali Rohár
2021-08-19  0:26 ` [PATCH v2 6/6] fs/ntfs3: Rename mount option no_acl_rules > (no)acl_rules Kari Argillander
2021-08-24  8:03   ` Christoph Hellwig
2021-08-24 11:15   ` Christian Brauner

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=20210819215315.uhst4ppwdbed65x7@kari-VirtualBox \
    --to=kari.argillander@gmail.com \
    --cc=almaz.alexandrovich@paragon-software.com \
    --cc=christian.brauner@ubuntu.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.