All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ian Kent <raven@themaw.net>
To: Brian Foster <bfoster@redhat.com>
Cc: linux-xfs <linux-xfs@vger.kernel.org>,
	Eric Sandeen <sandeen@sandeen.net>,
	David Howells <dhowells@redhat.com>,
	Dave Chinner <dchinner@redhat.com>,
	Al Viro <viro@zeniv.linux.org.uk>
Subject: Re: [PATCH v4 00/17] xfs: mount API patch series
Date: Tue, 08 Oct 2019 08:13:57 +0800	[thread overview]
Message-ID: <5693dea57f1f467c74676a0250eac15181b4af34.camel@themaw.net> (raw)
In-Reply-To: <20191007115246.GF22140@bfoster>

On Mon, 2019-10-07 at 07:52 -0400, Brian Foster wrote:
> On Thu, Oct 03, 2019 at 06:25:18PM +0800, Ian Kent wrote:
> > 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.
> > 
> 
> I'm not sure that we have any focused mount option testing in
> fstests.
> It looks like we have various remount tests and such to cover corner
> cases and/or specific bugs, but nothing to make sure various options
> continue to work or otherwise fail gracefully. Do you have any plans
> to
> add such a test to help verify this work?

Darrick was concerned about that.

Some sort of xfstest is needed in order to be able to merge this
so he has some confidence that it won't break things.

I volunteered to do have a go at writing a test.

I've given that some thought and done an initial survey of xfstests
but it's still new to me so I'm not sure how this will end up.

Darrick thought it would need a generic test to test VFS options
and one in xfs for the xfs specific options.

At this point I'm thinking I'll have a go at adding an xfs specific
options test but, while I can find out what the optionsare and what
validation they use, there's a lot about some of the xfs options
I don't fully understand so I don't know what a sensible test might
be.

> 
> Brian
> 
> > 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 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.
> > 
> > Al Viro has sent a pull request to Linus for the patch containing
> > get_tree_bdev() recently and I think there's a small problem with
> > that patch too so there will be conflicts with merging this series
> > without dropping the first two patches of the series.
> > 
> > ---
> > 
> > David Howells (1):
> >       vfs: Create fs_context-aware mount_bdev() replacement
> > 
> > Ian Kent (16):
> >       vfs: add missing blkdev_put() in get_tree_bdev()
> >       xfs: remove very old mount option
> >       xfs: mount-api - add fs parameter description
> >       xfs: mount-api - refactor suffix_kstrtoint()
> >       xfs: mount-api - refactor xfs_parseags()
> >       xfs: mount-api - make xfs_parse_param() take context
> > .parse_param() args
> >       xfs: mount-api - move xfs_parseargs() validation to a helper
> >       xfs: mount-api - refactor xfs_fs_fill_super()
> >       xfs: mount-api - add xfs_get_tree()
> >       xfs: mount-api - add xfs_remount_rw() helper
> >       xfs: mount-api - add xfs_remount_ro() helper
> >       xfs: mount api - add xfs_reconfigure()
> >       xfs: mount-api - add xfs_fc_free()
> >       xfs: mount-api - dont set sb in xfs_mount_alloc()
> >       xfs: mount-api - switch to new mount-api
> >       xfs: mount-api - remove remaining legacy mount code
> > 
> > 
> >  fs/super.c                 |   97 +++++
> >  fs/xfs/xfs_super.c         |  939 +++++++++++++++++++++++---------
> > ------------
> >  include/linux/fs_context.h |    5 
> >  3 files changed, 600 insertions(+), 441 deletions(-)
> > 
> > --
> > Ian


  reply	other threads:[~2019-10-08  0:14 UTC|newest]

Thread overview: 45+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-10-03 10:25 [PATCH v4 00/17] xfs: mount API patch series Ian Kent
2019-10-03 10:25 ` [PATCH v4 01/17] vfs: Create fs_context-aware mount_bdev() replacement Ian Kent
2019-10-03 10:25 ` [PATCH v4 02/17] vfs: add missing blkdev_put() in get_tree_bdev() Ian Kent
2019-10-03 14:56   ` Darrick J. Wong
2019-10-04  6:49     ` Ian Kent
2019-10-04  6:59       ` Ian Kent
2019-10-04 12:25         ` Al Viro
2019-10-03 10:25 ` [PATCH v4 03/17] xfs: remove very old mount option Ian Kent
2019-10-03 10:25 ` [PATCH v4 04/17] xfs: mount-api - add fs parameter description Ian Kent
2019-10-03 10:25 ` [PATCH v4 05/17] xfs: mount-api - refactor suffix_kstrtoint() Ian Kent
2019-10-03 10:25 ` [PATCH v4 06/17] xfs: mount-api - refactor xfs_parseags() Ian Kent
2019-10-03 10:25 ` [PATCH v4 07/17] xfs: mount-api - make xfs_parse_param() take context .parse_param() args Ian Kent
2019-10-04 15:51   ` Brian Foster
2019-10-03 10:26 ` [PATCH v4 08/17] xfs: mount-api - move xfs_parseargs() validation to a helper Ian Kent
2019-10-04 15:51   ` Brian Foster
2019-10-03 10:26 ` [PATCH v4 09/17] xfs: mount-api - refactor xfs_fs_fill_super() Ian Kent
2019-10-03 10:26 ` [PATCH v4 10/17] xfs: mount-api - add xfs_get_tree() Ian Kent
2019-10-04 15:52   ` Brian Foster
2019-10-04 22:56     ` Ian Kent
2019-10-03 10:26 ` [PATCH v4 11/17] xfs: mount-api - add xfs_remount_rw() helper Ian Kent
2019-10-03 10:26 ` [PATCH v4 12/17] xfs: mount-api - add xfs_remount_ro() helper Ian Kent
2019-10-03 10:26 ` [PATCH v4 13/17] xfs: mount api - add xfs_reconfigure() Ian Kent
2019-10-04 15:53   ` Brian Foster
2019-10-04 23:16     ` Ian Kent
2019-10-07 11:51       ` Brian Foster
2019-10-08  0:32         ` Ian Kent
2019-10-03 10:26 ` [PATCH v4 14/17] xfs: mount-api - add xfs_fc_free() Ian Kent
2019-10-07 11:51   ` Brian Foster
2019-10-08  0:35     ` Ian Kent
2019-10-03 10:26 ` [PATCH v4 15/17] xfs: mount-api - dont set sb in xfs_mount_alloc() Ian Kent
2019-10-07 11:52   ` Brian Foster
2019-10-03 10:26 ` [PATCH v4 16/17] xfs: mount-api - switch to new mount-api Ian Kent
2019-10-07 11:52   ` Brian Foster
2019-10-03 10:26 ` [PATCH v4 17/17] xfs: mount-api - remove remaining legacy mount code Ian Kent
2019-10-07 11:52   ` Brian Foster
2019-10-03 23:30 ` [PATCH v4 00/17] xfs: mount API patch series Eric Sandeen
2019-10-04  6:57   ` Ian Kent
2019-10-04  8:25     ` Ian Kent
2019-10-04  8:54       ` Ian Kent
2019-10-04 13:19       ` Eric Sandeen
2019-10-07 11:52 ` Brian Foster
2019-10-08  0:13   ` Ian Kent [this message]
2019-10-08  0:35     ` Darrick J. Wong
2019-10-08  1:20       ` Ian Kent
2019-10-08  1:35         ` 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=5693dea57f1f467c74676a0250eac15181b4af34.camel@themaw.net \
    --to=raven@themaw.net \
    --cc=bfoster@redhat.com \
    --cc=dchinner@redhat.com \
    --cc=dhowells@redhat.com \
    --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.