Re: [PATCH] add force_layoutcommit param

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, Sep 2, 2025 at 3:58 PM Haihua Yang <yanghh@xxxxxxxxx> wrote:
>
> Trond,
> Thanks for reviewing the change. I understand that, logically, if a
> WRITE is FILE_SYNC, a LAYOUTCOMMIT isn’t necessary. I’m working on
> enabling file_layout on some legacy POSIX filesystems, where
> synchronizing metadata between the MDS and DS during client writes to
> the DS incurs significant overhead. To address this, I’m suggesting an
> option that allows the MDS to update the metadata. From my reading,
> RFC8881 doesn’t seem to prohibit LAYOUTCOMMIT in this scenario, could
> you share more detail about how it would break the FILE_SYNC case?
If you look at this email thread that was on nfsv4@xxxxxxxx in 2019, you'll
see some discussion of this. I do not believe there was an agreement that
the client do a LAYOUTCOMMIT for this case. (You'll see I discovered what
I believe you have discovered.)

https://mailarchive.ietf.org/arch/msg/nfsv4/eQNilayKCMA43RbzjjuttjdBZ7Q/

rick

> Thanks
> Haihua
>
> On Tue, Sep 2, 2025 at 2:18 PM Trond Myklebust <trondmy@xxxxxxxxxxxxxxx> wrote:
> >
> > On Tue, 2025-09-02 at 18:19 +0000, Haihua Yang wrote:
> > > [You don't often get email from yanghh@xxxxxxxxx. Learn why this is
> > > important at https://aka.ms/LearnAboutSenderIdentification ]
> > >
> > > ---
> > >  fs/nfs/filelayout/filelayout.c | 12 +++++++++---
> > >  1 file changed, 9 insertions(+), 3 deletions(-)
> > >
> > > diff --git a/fs/nfs/filelayout/filelayout.c
> > > b/fs/nfs/filelayout/filelayout.c
> > > index d39a1f58e18d..1cb8f413a665 100644
> > > --- a/fs/nfs/filelayout/filelayout.c
> > > +++ b/fs/nfs/filelayout/filelayout.c
> > > @@ -48,6 +48,8 @@ MODULE_LICENSE("GPL");
> > >  MODULE_AUTHOR("Dean Hildebrand <dhildebz@xxxxxxxxx>");
> > >  MODULE_DESCRIPTION("The NFSv4 file layout driver");
> > >
> > > +static bool force_layoutcommit = false;
> > > +
> > >  #define FILELAYOUT_POLL_RETRY_MAX     (15*HZ)
> > >  static const struct pnfs_commit_ops filelayout_commit_ops;
> > >
> > > @@ -233,10 +235,11 @@ filelayout_set_layoutcommit(struct
> > > nfs_pgio_header *hdr)
> > >  {
> > >         loff_t end_offs = 0;
> > >
> > > -       if (FILELAYOUT_LSEG(hdr->lseg)->commit_through_mds ||
> > > -           hdr->res.verf->committed == NFS_FILE_SYNC)
> > > +       if (!force_layoutcommit && (FILELAYOUT_LSEG(hdr->lseg)-
> > > >commit_through_mds ||
> > > +           hdr->res.verf->committed == NFS_FILE_SYNC))
> > >                 return;
> > > -       if (hdr->res.verf->committed == NFS_DATA_SYNC)
> > > +       if (hdr->res.verf->committed == NFS_DATA_SYNC ||
> > > +           (force_layoutcommit && hdr->res.verf->committed ==
> > > NFS_FILE_SYNC))
> > >                 end_offs = hdr->mds_offset + (loff_t)hdr->res.count;
> > >
> > >         /* Note: if the write is unstable, don't set end_offs until
> > > commit */
> > > @@ -1149,5 +1152,8 @@ static void __exit nfs4filelayout_exit(void)
> > >
> > >  MODULE_ALIAS("nfs-layouttype4-1");
> > >
> > > +module_param(force_layoutcommit, bool, 0644);
> > > +MODULE_PARM_DESC(force_layoutcommit, "Force LAYOUTCOMMIT after data
> > > was written (default: false)");
> > > +
> > >  module_init(nfs4filelayout_init);
> > >  module_exit(nfs4filelayout_exit);
> > > --
> > > 2.51.0.87.g1fa68948c3.dirty
> > >
> >
> > NACK.
> >
> > Firstly, there is no documentation that tells either me or any
> > pnfs/files user when it would be desirable to set this flag. There
> > isn't even a reference to what problem in RFC8881 it addresses.
> >
> > Secondly, it breaks the NFS_FILE_SYNC case.
> >
> > --
> > Trond Myklebust
> > Linux NFS client maintainer, Hammerspace
> > trondmy@xxxxxxxxxx, trond.myklebust@xxxxxxxxxxxxxxx
>





[Index of Archives]     [Linux Filesystem Development]     [Linux USB Development]     [Linux Media Development]     [Video for Linux]     [Linux NILFS]     [Linux Audio Users]     [Yosemite Info]     [Linux SCSI]

  Powered by Linux