From: Christoph Hellwig <hch-jcswGhMUV9g@public.gmane.org>
To: Dave Chinner <david-FqsqvQoI3Ljby3iVrkZq2A@public.gmane.org>
Cc: Christoph Hellwig <hch-jcswGhMUV9g@public.gmane.org>,
"J. Bruce Fields"
<bfields-uC3wQj2KruNg9hUCZPvPmw@public.gmane.org>,
Jeff Layton <jlayton-7I+n7zu2hftEKMMhf/gKZA@public.gmane.org>,
linux-nfs-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
linux-fsdevel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
xfs-VZNHf3L845pBDgjK7y7TUQ@public.gmane.org
Subject: Re: [PATCH 19/20] xfs: implement pNFS export operations
Date: Thu, 5 Feb 2015 08:08:58 +0100 [thread overview]
Message-ID: <20150205070858.GA593@lst.de> (raw)
In-Reply-To: <20150205004758.GO4251@dastard>
On Thu, Feb 05, 2015 at 11:47:58AM +1100, Dave Chinner wrote:
> > +++ b/fs/xfs/Makefile
> > @@ -121,3 +121,4 @@ xfs-$(CONFIG_XFS_POSIX_ACL) += xfs_acl.o
> > xfs-$(CONFIG_PROC_FS) += xfs_stats.o
> > xfs-$(CONFIG_SYSCTL) += xfs_sysctl.o
> > xfs-$(CONFIG_COMPAT) += xfs_ioctl32.o
> > +xfs-$(CONFIG_NFSD_PNFS) += xfs_pnfs.o
>
> ... because I'll have to jump through hoops to get it to compile, I
> think.
Just get the whole git tree from
git://git.infradead.org/users/hch/pnfs.git pnfsd-for-3.20-3
> > diff --git a/fs/xfs/xfs_fsops.c b/fs/xfs/xfs_fsops.c
> > index 74c6211..99465ba 100644
> > --- a/fs/xfs/xfs_fsops.c
> > +++ b/fs/xfs/xfs_fsops.c
> > @@ -602,6 +602,8 @@ xfs_growfs_data(
> > if (!mutex_trylock(&mp->m_growlock))
> > return -EWOULDBLOCK;
> > error = xfs_growfs_data_private(mp, in);
> > + if (!error)
> > + mp->m_generation++;
> > mutex_unlock(&mp->m_growlock);
> > return error;
> > }
>
> Even on error I think we should bump this. Errors can come from
> secondary superblock updates after the filesystem has been grown,
> hence an error is not a reliable indication of whether the layout
> has changed or not.
Ok.
>
> > +int
> > +xfs_fs_get_uuid(
> > + struct super_block *sb,
> > + u8 *buf,
> > + u32 *len,
> > + u64 *offset)
> > +{
> > + struct xfs_mount *mp = XFS_M(sb);
> > +
> > + if (*len < sizeof(uuid_t))
> > + return -EINVAL;
> > +
> > + memcpy(buf, &mp->m_sb.sb_uuid, sizeof(uuid_t));
> > + *len = sizeof(uuid_t);
> > + *offset = offsetof(struct xfs_dsb, sb_uuid);
>
> What purpose does the offset serve here? I can't tell from the usage
> in the PNFS code. Can we ignore offset - as it seems entirely
> arbitrary - and still have this work? Either way, comment please.
The get_uuid methods gets content and location of the uuid so that
the client can find the disks. The offset simply is part of the wire
protocol.
> I'd like to see a IOMAP_NULL_BLOCK define here for the -1 value,
> say:
>
> #define IOMAP_NULL_BLOCK -1LL
Ok.
> OK, so we are not mapping realtime inodes here. Any specific reason?
The realtime device doesn't have a way for the client to find it, as
it doesn't have its own superblockuuids.
> FWIW, that also means you can use XFS_FSB_TO_DADDR() in the iomap
> mapping as xfs_fsb_to_db() is only needed if we might be mapping
> realtime extents...
ok.
> > + tp = xfs_trans_alloc(mp, XFS_TRANS_SETATTR_NOT_SIZE);
> > + error = xfs_trans_reserve(tp, &M_RES(mp)->tr_ichange, 0, 0);
> > + if (error)
> > + goto out_drop_iolock;
> > +
> > + xfs_ilock(ip, XFS_ILOCK_EXCL);
> > + xfs_trans_ijoin(tp, ip, XFS_ILOCK_EXCL);
> > + xfs_trans_log_inode(tp, ip, XFS_ILOG_CORE);
> > +
> > + xfs_setattr_time(ip, iattr);
> > + if (iattr->ia_valid & ATTR_SIZE) {
> > + if (iattr->ia_size > i_size_read(inode)) {
> > + i_size_write(inode, iattr->ia_size);
> > + ip->i_d.di_size = iattr->ia_size;
> > + }
> > + }
>
> The concern I have about this is that extending the file size can
> expose uninitialised blocks beyond the old EOF. That can happen if
> delayed allocation has previously been done on the file and we
> haven't trimmed the excess beyond EOF back yet. I know the pnfs
> server is not aimed at mixed usage, but it still makes me
> uncomfortable in the case where you have normal NFS and PNFS clients
> accessing the same files...
The protocol only allows to commit to a size that we previously
returned a layout for, which means we already have allocated space
for it at same time. For robustness reasons a sanity check might make
sense, though.
> > + xfs_trans_set_sync(tp);
> > + error = xfs_trans_commit(tp, 0);
>
> I just had a thought about these sync transctions - could the NFS
> server handle persistence of the maps via ->commit_metadata?
It probably could, but that wouldn't buy us anything over just committing
the transaction synchronously.
--
To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
next prev parent reply other threads:[~2015-02-05 7:08 UTC|newest]
Thread overview: 63+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-01-22 11:09 a simple and scalable pNFS block layout server V2 Christoph Hellwig
2015-01-22 11:09 ` [PATCH 04/20] nfsd: factor out a helper to decode nfstime4 values Christoph Hellwig
[not found] ` <1421925006-24231-5-git-send-email-hch-jcswGhMUV9g@public.gmane.org>
2015-01-22 20:15 ` J. Bruce Fields
2015-01-22 11:09 ` [PATCH 05/20] nfsd: move nfsd_fh_match to nfsfh.h Christoph Hellwig
2015-01-22 11:09 ` [PATCH 09/20] nfsd: make find_any_file available outside nfs4state.c Christoph Hellwig
2015-01-22 11:09 ` [PATCH 12/20] nfsd: update documentation for pNFS support Christoph Hellwig
2015-01-22 11:09 ` [PATCH 13/20] nfsd: add trace events Christoph Hellwig
2015-01-22 11:10 ` [PATCH 15/20] nfsd: pNFS block layout driver Christoph Hellwig
2015-01-22 11:10 ` [PATCH 18/20] xfs: factor out a xfs_update_prealloc_flags() helper Christoph Hellwig
[not found] ` <1421925006-24231-19-git-send-email-hch-jcswGhMUV9g@public.gmane.org>
2015-02-01 23:06 ` Dave Chinner
2015-01-22 16:04 ` a simple and scalable pNFS block layout server V2 Chuck Lever
2015-01-22 16:21 ` Christoph Hellwig
[not found] ` <1421925006-24231-1-git-send-email-hch-jcswGhMUV9g@public.gmane.org>
2015-01-22 11:09 ` [PATCH 01/20] nfs: add LAYOUT_TYPE_MAX enum value Christoph Hellwig
2015-01-22 11:09 ` [PATCH 02/20] fs: track fl_owner for leases Christoph Hellwig
2015-01-22 11:09 ` [PATCH 03/20] fs: add FL_LAYOUT lease type Christoph Hellwig
2015-01-22 15:45 ` Jeff Layton
[not found] ` <1421925006-24231-4-git-send-email-hch-jcswGhMUV9g@public.gmane.org>
2015-01-22 20:14 ` J. Bruce Fields
[not found] ` <20150122201442.GJ898-uC3wQj2KruNg9hUCZPvPmw@public.gmane.org>
2015-01-22 20:18 ` Christoph Hellwig
2015-01-22 11:09 ` [PATCH 06/20] nfsd: add fh_fsid_match helper Christoph Hellwig
2015-01-22 11:09 ` [PATCH 07/20] nfsd: make lookup/alloc/unhash_stid available outside nfs4state.c Christoph Hellwig
2015-01-22 11:09 ` [PATCH 08/20] nfsd: make find/get/put file " Christoph Hellwig
2015-01-22 11:09 ` [PATCH 10/20] nfsd: implement pNFS operations Christoph Hellwig
[not found] ` <1421925006-24231-11-git-send-email-hch-jcswGhMUV9g@public.gmane.org>
2015-01-29 20:33 ` J. Bruce Fields
[not found] ` <20150129203346.GA11064-uC3wQj2KruNg9hUCZPvPmw@public.gmane.org>
2015-02-02 12:43 ` Christoph Hellwig
2015-02-02 14:28 ` J. Bruce Fields
[not found] ` <20150202142832.GC22301-uC3wQj2KruNg9hUCZPvPmw@public.gmane.org>
2015-02-02 14:56 ` Christoph Hellwig
[not found] ` <20150202145619.GA18387-jcswGhMUV9g@public.gmane.org>
2015-02-02 15:00 ` J. Bruce Fields
[not found] ` <20150202150032.GD22301-uC3wQj2KruNg9hUCZPvPmw@public.gmane.org>
2015-02-02 18:56 ` Christoph Hellwig
[not found] ` <20150202185638.GB23319-jcswGhMUV9g@public.gmane.org>
2015-02-03 16:08 ` J. Bruce Fields
2015-01-22 11:09 ` [PATCH 11/20] nfsd: implement pNFS layout recalls Christoph Hellwig
2015-01-22 11:10 ` [PATCH 14/20] exportfs: add methods for block layout exports Christoph Hellwig
2015-01-22 11:10 ` [PATCH 16/20] xfs: pass a 64-bit count argument to xfs_iomap_write_unwritten Christoph Hellwig
2015-01-29 20:52 ` J. Bruce Fields
2015-02-02 7:30 ` Christoph Hellwig
2015-02-02 19:24 ` Dave Chinner
2015-02-02 19:43 ` Dave Chinner
2015-02-02 19:48 ` J. Bruce Fields
2015-02-03 18:35 ` Christoph Hellwig
[not found] ` <20150203183533.GA16929-jcswGhMUV9g@public.gmane.org>
2015-02-11 22:35 ` J. Bruce Fields
2015-02-11 22:54 ` J. Bruce Fields
2015-02-04 7:57 ` Christoph Hellwig
[not found] ` <20150204075756.GA763-jcswGhMUV9g@public.gmane.org>
2015-02-04 20:02 ` Dave Chinner
2015-01-22 11:10 ` [PATCH 17/20] xfs: update the superblock using a synchronous transaction in growfs Christoph Hellwig
2015-01-22 11:10 ` [PATCH 19/20] xfs: implement pNFS export operations Christoph Hellwig
[not found] ` <1421925006-24231-20-git-send-email-hch-jcswGhMUV9g@public.gmane.org>
2015-02-05 0:47 ` Dave Chinner
2015-02-05 7:08 ` Christoph Hellwig [this message]
[not found] ` <20150205070858.GA593-jcswGhMUV9g@public.gmane.org>
2015-02-05 13:57 ` Christoph Hellwig
[not found] ` <20150205135756.GA6386-jcswGhMUV9g@public.gmane.org>
2015-02-06 22:20 ` Dave Chinner
2015-02-06 22:42 ` J. Bruce Fields
2015-02-08 13:34 ` Christoph Hellwig
[not found] ` <20150208133435.GA27081-jcswGhMUV9g@public.gmane.org>
2015-02-08 14:09 ` Jeff Layton
[not found] ` <20150208090942.51e99687-9yPaYZwiELC+kQycOl6kW4xkIHaj4LzF@public.gmane.org>
2015-02-09 20:11 ` J. Bruce Fields
[not found] ` <20150209201154.GA27746-uC3wQj2KruNg9hUCZPvPmw@public.gmane.org>
2015-02-10 0:04 ` Dave Chinner
2015-02-13 1:11 ` J. Bruce Fields
2015-02-13 1:54 ` Dave Chinner
2015-02-13 2:38 ` Stephen Rothwell
2015-02-15 23:25 ` Dave Chinner
2015-01-22 11:10 ` [PATCH 20/20] xfs: recall pNFS layouts on conflicting access Christoph Hellwig
[not found] ` <1421925006-24231-21-git-send-email-hch-jcswGhMUV9g@public.gmane.org>
2015-02-05 0:51 ` Dave Chinner
2015-01-22 20:01 ` a simple and scalable pNFS block layout server V2 J. Bruce Fields
2015-01-22 20:06 ` J. Bruce Fields
2015-01-22 20:20 ` Christoph Hellwig
[not found] ` <20150122200618.GI898-uC3wQj2KruNg9hUCZPvPmw@public.gmane.org>
2015-01-22 20:20 ` Jeff Layton
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=20150205070858.GA593@lst.de \
--to=hch-jcswghmuv9g@public.gmane.org \
--cc=bfields-uC3wQj2KruNg9hUCZPvPmw@public.gmane.org \
--cc=david-FqsqvQoI3Ljby3iVrkZq2A@public.gmane.org \
--cc=jlayton-7I+n7zu2hftEKMMhf/gKZA@public.gmane.org \
--cc=linux-fsdevel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=linux-nfs-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=xfs-VZNHf3L845pBDgjK7y7TUQ@public.gmane.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).