On Mon, Feb 26, 2024 at 04:46:28PM -0600, 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@xxxxxxxxxx> > --- > 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; This confused me to no end because setting SB_RDONLY here unconditionally would be wrong if it's not requested from userspace during a remount. Because in that case the vfs wouldn't know that an actual read-only remount request had been made which means that we don't take the necessary protection steps to transition from read-write to read-only. But qnx{4,6} are read-only so this is actually correct even though it seems pretty weird.