All of lore.kernel.org
 help / color / mirror / Atom feed
From: Anders Larsen <al@alarsen.net>
To: linux-fsdevel@vger.kernel.org, Bill O'Donnell <bodonnel@redhat.com>
Cc: brauner@kernel.org, sandeen@redhat.com,
	Bill O'Donnell <bodonnel@redhat.com>
Subject: Re: [PATCH] qnx4: convert qnx4 to use the new mount api
Date: Tue, 27 Feb 2024 13:43:55 +0100	[thread overview]
Message-ID: <2925451.e9J7NaK4W3@oscar> (raw)
In-Reply-To: <20240226224628.710547-1-bodonnel@redhat.com>

On 2024-02-26 23:46 Bill O'Donnell wrote:
> Convert the qnx4 filesystem to use the new mount API.
> 
> Tested mount, umount, and remount using a qnx4 boot image.
> 
> Signed-off-by: Bill O'Donnell <bodonnel@redhat.com>

Acked-by: Anders Larsen <al@alarsen.net>

> ---
>  fs/qnx4/inode.c | 49 +++++++++++++++++++++++++++++++------------------
>  1 file changed, 31 insertions(+), 18 deletions(-)
> 
> diff --git a/fs/qnx4/inode.c b/fs/qnx4/inode.c
> index 6eb9bb369b57..c36fbe45a0e9 100644
> --- a/fs/qnx4/inode.c
> +++ b/fs/qnx4/inode.c
> @@ -21,6 +21,7 @@
>  #include <linux/buffer_head.h>
>  #include <linux/writeback.h>
>  #include <linux/statfs.h>
> +#include <linux/fs_context.h>
>  #include "qnx4.h"
> 
>  #define QNX4_VERSION  4
> @@ -30,28 +31,33 @@ static const struct super_operations qnx4_sops;
> 
>  static struct inode *qnx4_alloc_inode(struct super_block *sb);
>  static void qnx4_free_inode(struct inode *inode);
> -static int qnx4_remount(struct super_block *sb, int *flags, char *data);
>  static int qnx4_statfs(struct dentry *, struct kstatfs *);
> +static int qnx4_get_tree(struct fs_context *fc);
> 
>  static const struct super_operations qnx4_sops =
>  {
>  	.alloc_inode	= qnx4_alloc_inode,
>  	.free_inode	= qnx4_free_inode,
>  	.statfs		= qnx4_statfs,
> -	.remount_fs	= qnx4_remount,
>  };
> 
> -static int qnx4_remount(struct super_block *sb, int *flags, char *data)
> +static int qnx4_reconfigure(struct fs_context *fc)
>  {
> -	struct qnx4_sb_info *qs;
> +	struct super_block *sb = fc->root->d_sb;
> +	struct qnx4_sb_info *qs = sb->s_fs_info;
> 
>  	sync_filesystem(sb);
>  	qs = qnx4_sb(sb);
>  	qs->Version = QNX4_VERSION;
> -	*flags |= SB_RDONLY;
> +	fc->sb_flags |= SB_RDONLY;
>  	return 0;
>  }
> 
> +static const struct fs_context_operations qnx4_context_opts = {
> +	.get_tree	= qnx4_get_tree,
> +	.reconfigure	= qnx4_reconfigure,
> +};
> +
>  static int qnx4_get_block( struct inode *inode, sector_t iblock, struct
> buffer_head *bh, int create ) {
>  	unsigned long phys;
> @@ -183,12 +189,13 @@ static const char *qnx4_checkroot(struct super_block
> *sb, return "bitmap file not found.";
>  }
> 
> -static int qnx4_fill_super(struct super_block *s, void *data, int silent)
> +static int qnx4_fill_super(struct super_block *s, struct fs_context *fc)
>  {
>  	struct buffer_head *bh;
>  	struct inode *root;
>  	const char *errmsg;
>  	struct qnx4_sb_info *qs;
> +	int silent = fc->sb_flags & SB_SILENT;
> 
>  	qs = kzalloc(sizeof(struct qnx4_sb_info), GFP_KERNEL);
>  	if (!qs)
> @@ -216,7 +223,7 @@ static int qnx4_fill_super(struct super_block *s, void
> *data, int silent) errmsg = qnx4_checkroot(s, (struct qnx4_super_block *)
> bh->b_data); brelse(bh);
>  	if (errmsg != NULL) {
> - 		if (!silent)
> +		if (!silent)
>  			printk(KERN_ERR "qnx4: %s\n", errmsg);
>  		return -EINVAL;
>  	}
> @@ -235,6 +242,18 @@ static int qnx4_fill_super(struct super_block *s, void
> *data, int silent) return 0;
>  }
> 
> +static int qnx4_get_tree(struct fs_context *fc)
> +{
> +	return get_tree_bdev(fc, qnx4_fill_super);
> +}
> +
> +static int qnx4_init_fs_context(struct fs_context *fc)
> +{
> +	fc->ops = &qnx4_context_opts;
> +
> +	return 0;
> +}
> +
>  static void qnx4_kill_sb(struct super_block *sb)
>  {
>  	struct qnx4_sb_info *qs = qnx4_sb(sb);
> @@ -376,18 +395,12 @@ static void destroy_inodecache(void)
>  	kmem_cache_destroy(qnx4_inode_cachep);
>  }
> 
> -static struct dentry *qnx4_mount(struct file_system_type *fs_type,
> -	int flags, const char *dev_name, void *data)
> -{
> -	return mount_bdev(fs_type, flags, dev_name, data, qnx4_fill_super);
> -}
> -
>  static struct file_system_type qnx4_fs_type = {
> -	.owner		= THIS_MODULE,
> -	.name		= "qnx4",
> -	.mount		= qnx4_mount,
> -	.kill_sb	= qnx4_kill_sb,
> -	.fs_flags	= FS_REQUIRES_DEV,
> +	.owner			= THIS_MODULE,
> +	.name			= "qnx4",
> +	.kill_sb		= qnx4_kill_sb,
> +	.fs_flags		= FS_REQUIRES_DEV,
> +	.init_fs_context	= qnx4_init_fs_context,
>  };
>  MODULE_ALIAS_FS("qnx4");




  parent reply	other threads:[~2024-02-27 12:44 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-02-26 22:46 [PATCH] qnx4: convert qnx4 to use the new mount api Bill O'Donnell
2024-02-27 12:23 ` Christian Brauner
2024-02-27 12:26 ` Christian Brauner
2024-02-27 23:54   ` Eric Sandeen
2024-02-27 12:43 ` Anders Larsen [this message]
2024-02-27 22:49 ` Eric Sandeen
2024-02-28  0:20   ` Bill O'Donnell

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=2925451.e9J7NaK4W3@oscar \
    --to=al@alarsen.net \
    --cc=bodonnel@redhat.com \
    --cc=brauner@kernel.org \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=sandeen@redhat.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 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.