From: Ian Kent <raven@themaw.net>
To: linux-xfs <linux-xfs@vger.kernel.org>
Cc: Christoph Hellwig <hch@infradead.org>,
"Darrick J. Wong" <darrick.wong@oracle.com>,
Brian Foster <bfoster@redhat.com>,
Eric Sandeen <sandeen@sandeen.net>,
David Howells <dhowells@redhat.com>,
Dave Chinner <dchinner@redhat.com>,
Al Viro <viro@ZenIV.linux.org.uk>
Subject: [PATCH v7 00/17] xfs: mount API patch series
Date: Thu, 24 Oct 2019 15:50:34 +0800 [thread overview]
Message-ID: <157190333868.27074.13987695222060552856.stgit@fedora-28> (raw)
This patch series add support to xfs for the new kernel mount API
as described in the LWN article at https://lwn.net/Articles/780267/.
In the article there's a lengthy description of the reasons for
adopting the API and problems expected to be resolved by using it.
The series has been applied to the repository located at
git://git.kernel.org/pub/scm/fs/xfs/xfs-linux.git, and built and
some simple tests run on it along with the generic xfstests.
Note: the patches "xfs: add xfs_remount_rw() helper" and
"xfs: add xfs_remount_ro() helper" that have Reviewed-by attributions
each needed a forward declartion added due grouping all the mount
related code together. Reviewers may want to check the attribution
is still acceptable.
The first patch in the series is needed only for testing. It is now
present in the current upstream rc kernel so it will need to be dropped
before merging.
Other things that continue to cause me concern:
- Message logging.
There is error logging done in the VFS by the mount-api code, some
is VFS specific while some is file system specific. This can lead
to duplicated and sometimes inconsistent logging.
The mount-api feature of saving error message text to the mount
context for later retrieval by fsopen()/fsconfig()/fsmount() users
is the reason the mount-api log macros are present. But, at the
moment (last time I looked), these macros will either log the
error message or save it to the mount context. There's not yet
a way to modify this behaviour so it which can lead to messages,
possibly needed for debug purposes, not being sent to the kernel
log. There's also the pr_xxx() log functions (not a problem for
xfs AFAICS) that aren't aware of the mount context at all.
In the xfs patches I've used the same method that is used in
gfs2 and was suggested by Al Viro (essentially return the error
if fs_parse() returns one) except that I've also not used the
mount api log macros to minimise the possibility of lost log
messages.
This isn't the best so follow up patches for RFC (with a
slightly wider audience) will be needed to try and improve
this aspect of the mount api.
Changes for v7:
- fix s/mount info/struct xfs_mount/g in the patches that remove the
m_fsname_len and m_fsname struct xfs_mount fields.
- also use IS_ENABLED() macro for the quota config check.
- don't use typedef'ed struct definitions in new or chencged code.
- extend comment lines to use full 80 characters and to 72 characters
for commit log entries.
- fix function parameter and variable declaration style inconsistencies.
- use "return 0" instead of "break" in xfs_parse_param() as recommended.
- avoid redundant option checks for the case where no options are given.
- merge freeing of mp names and mp.
- change name field of struct fs_parameter_description to lower case.
- group mount related code together as much as possible to enhance
readability.
- changed mount api related functions to all use an "xfs_fc" prefix.
Changes for v6:
- drop get_tree_bdev() patch since it's now present in the xfs-linux repo.
- eliminate unused mount info. field m_fsname_len.
- eliminate mount info field m_fsname, use super block field s_id instead.
- dont use XFS_IS_QUOTA_RUNNING() when checking if quota options have been
specified.
- combine mount-api specific patches into a single patch to help with
bi-sectability.
Changes for v5:
- give error exit label in xfs_fill_super() a sensible name.
- use original comment about options handling in xfs_fs_remount() for
comment above xfs_reconfigure().
- use a much simpler comment in xfs_fc_free(), thanks to Brian Foster.
- move cover letter comment about the first two patches above the
revision comentary so it isn't missed.
Changes for v4:
- changed xfs_fill_super() cleanup back to what it was in v2, until
I can work out what's causing the problem had previously seen (I can't
reproduce it myself), since it looks like it was right from the start.
- use get_tree_bdev() instead of vfs_get_block_super() in xfs_get_tree()
as requested by Al Viro.
- removed redundant initialisation in xfs_fs_fill_super().
- fix long line in xfs_validate_params().
- no need to validate if parameter parsing fails, just return the error.
- summarise reconfigure comment about option handling, transfer bulk
of comment to commit log message.
- use minimal change in xfs_parse_param(), deffer discussion of mount
api logging improvements until later and with a wider audience.
Changes for v3:
- fix struct xfs_fs_context initialisation in xfs_parseargs().
- move call to xfs_validate_params() below label "done".
- if allocation of xfs_mount fails return ENOMEM immediately.
- remove erroneous kfree(mp) in xfs_fill_super().
- move the removal of xfs_fs_remount() and xfs_test_remount_options()
to the switch to mount api patch.
- retain original usage of distinct <option>, no<option> usage.
- fix line length and a white space problem in xfs_parseargs().
- defer introduction of struct fs_context_operations until mount
api implementation.
- don't use a new line for the void parameter of xfs_mount_alloc().
- check for -ENOPARAM in xfs_parse_param() to report invalid options
using the options switch (to avoid double entry log messages).
- remove obsolete mount option biosize.
- try and make comment in xfs_fc_free() more understandable.
Changes for v2:
- changed .name to uppercase in fs_parameter_description to ensure
consistent error log messages between the vfs parser and the xfs
parameter parser.
- clarify comment above xfs_parse_param() about when possibly
allocated mp->m_logname or mp->m_rtname are freed.
- factor out xfs_remount_rw() and xfs_remount_ro() from xfs_remount().
- changed xfs_mount_alloc() to not set super block in xfs_mount so it
can be re-used when switching to the mount-api.
- fixed don't check for NULL when calling kfree() in xfs_fc_free().
- refactored xfs_parseargs() in an attempt to highlight the code
that actually changes in converting to use the new mount api.
- dropped xfs-mount-api-rename-xfs_fill_super.patch, it didn't seem
necessary.
- move comment about remount difficulties above xfs_reconfigure()
and increase line length to try and make the comment manageable.
---
Ian Kent (17):
vfs: add missing blkdev_put() in get_tree_bdev()
xfs: remove very old mount option
xfs: remove unused struct xfs_mount field m_fsname_len
xfs: use super s_id instead of struct xfs_mount m_fsname
xfs: dont use XFS_IS_QUOTA_RUNNING() for option check
xfs: use kmem functions for struct xfs_mount
xfs: move xfs_mount_alloc to be with parsing code
xfs: merge freeing of mp names and mp
xfs: add xfs_remount_rw() helper
xfs: add xfs_remount_ro() helper
xfs: refactor suffix_kstrtoint()
xfs: avoid redundant checks when options is empty
xfs: refactor xfs_parseags()
xfs: move xfs_parseargs() validation to a helper
xfs: dont set sb in xfs_mount_alloc()
xfs: move xfs_fs_fill_super() to be with parsing code
xfs: switch to use the new mount-api
fs/super.c | 5
fs/xfs/xfs_error.c | 2
fs/xfs/xfs_log.c | 2
fs/xfs/xfs_message.c | 4
fs/xfs/xfs_mount.c | 5
fs/xfs/xfs_mount.h | 2
fs/xfs/xfs_pnfs.c | 2
fs/xfs/xfs_super.c | 1607 ++++++++++++++++++++++++------------------------
fs/xfs/xfs_trans_ail.c | 2
9 files changed, 824 insertions(+), 807 deletions(-)
--
Ian
next reply other threads:[~2019-10-24 7:50 UTC|newest]
Thread overview: 37+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-10-24 7:50 Ian Kent [this message]
2019-10-24 7:50 ` [PATCH v7 01/17] vfs: add missing blkdev_put() in get_tree_bdev() Ian Kent
2019-10-24 7:50 ` [PATCH v7 02/17] xfs: remove very old mount option Ian Kent
2019-10-24 7:50 ` [PATCH v7 03/17] xfs: remove unused struct xfs_mount field m_fsname_len Ian Kent
2019-10-24 7:50 ` [PATCH v7 04/17] xfs: use super s_id instead of struct xfs_mount m_fsname Ian Kent
2019-10-24 7:51 ` [PATCH v7 05/17] xfs: dont use XFS_IS_QUOTA_RUNNING() for option check Ian Kent
2019-10-25 13:52 ` Christoph Hellwig
2019-10-24 7:51 ` [PATCH v7 06/17] xfs: use kmem functions for struct xfs_mount Ian Kent
2019-10-24 15:26 ` Darrick J. Wong
2019-10-25 13:53 ` Christoph Hellwig
2019-10-24 7:51 ` [PATCH v7 07/17] xfs: move xfs_mount_alloc to be with parsing code Ian Kent
2019-10-25 14:31 ` Christoph Hellwig
2019-10-24 7:51 ` [PATCH v7 08/17] xfs: merge freeing of mp names and mp Ian Kent
2019-10-24 15:28 ` Darrick J. Wong
2019-10-25 14:37 ` Christoph Hellwig
2019-10-24 7:51 ` [PATCH v7 09/17] xfs: add xfs_remount_rw() helper Ian Kent
2019-10-24 15:31 ` Darrick J. Wong
2019-10-24 21:53 ` Ian Kent
2019-10-24 23:12 ` Darrick J. Wong
2019-10-25 16:45 ` Christoph Hellwig
2019-10-24 7:51 ` [PATCH v7 10/17] xfs: add xfs_remount_ro() helper Ian Kent
2019-10-24 15:32 ` Darrick J. Wong
2019-10-24 7:51 ` [PATCH v7 11/17] xfs: refactor suffix_kstrtoint() Ian Kent
2019-10-24 15:38 ` Darrick J. Wong
2019-10-24 22:02 ` Ian Kent
2019-10-25 14:39 ` Christoph Hellwig
2019-10-24 7:51 ` [PATCH v7 12/17] xfs: avoid redundant checks when options is empty Ian Kent
2019-10-24 15:40 ` Darrick J. Wong
2019-10-25 14:42 ` Christoph Hellwig
2019-10-24 7:51 ` [PATCH v7 13/17] xfs: refactor xfs_parseags() Ian Kent
2019-10-24 15:41 ` Darrick J. Wong
2019-10-24 7:51 ` [PATCH v7 14/17] xfs: move xfs_parseargs() validation to a helper Ian Kent
2019-10-24 15:51 ` Darrick J. Wong
2019-10-24 7:51 ` [PATCH v7 15/17] xfs: dont set sb in xfs_mount_alloc() Ian Kent
2019-10-24 7:51 ` [PATCH v7 16/17] xfs: move xfs_fs_fill_super() to be with parsing code Ian Kent
2019-10-24 7:52 ` [PATCH v7 17/17] xfs: switch to use the new mount-api Ian Kent
2019-10-25 17:01 ` Darrick J. Wong
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=157190333868.27074.13987695222060552856.stgit@fedora-28 \
--to=raven@themaw.net \
--cc=bfoster@redhat.com \
--cc=darrick.wong@oracle.com \
--cc=dchinner@redhat.com \
--cc=dhowells@redhat.com \
--cc=hch@infradead.org \
--cc=linux-xfs@vger.kernel.org \
--cc=sandeen@sandeen.net \
--cc=viro@ZenIV.linux.org.uk \
/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.