From: Dave Chinner <david@fromorbit.com>
To: Amir Goldstein <amir73il@gmail.com>
Cc: Allison Henderson <allison.henderson@oracle.com>,
linux-xfs <linux-xfs@vger.kernel.org>
Subject: Re: [PATCH 00/17] Parent Pointers V3
Date: Mon, 23 Oct 2017 10:27:42 +1100 [thread overview]
Message-ID: <20171022232741.GU3666@dastard> (raw)
In-Reply-To: <CAOQ4uxjQk_82RxzSKWT+UeepkKXtrXbVmNW2wz6Mngq=UX+XZg@mail.gmail.com>
On Sat, Oct 21, 2017 at 10:34:30AM +0300, Amir Goldstein wrote:
> On Sat, Oct 21, 2017 at 1:41 AM, Dave Chinner <david@fromorbit.com> wrote:
> > On Thu, Oct 19, 2017 at 07:11:50AM +0300, Amir Goldstein wrote:
> >> On Thu, Oct 19, 2017 at 1:55 AM, Allison Henderson
> >> <allison.henderson@oracle.com> wrote:
> >> > Hi all,
> >> >
> >> > This is the third version of parent pointer attributes for xfs.
> >> > I've integrated the suggestions made since v2, mostly moving the
> >> > attr buffers in the xfs_attr_log_item to pointers that point to
> >> > xfs_attr_item. I've also implementing the recovery routines for
> >> > the xfs_attr_log_format. If I missed anything please point it
> >> > out. As always, comments and feedback are appreciated. Thank
> >> > you!
> >> >
> >>
> >> A minor comment about the cover letter.
> >> All designated reviewers must know exactly what "parent pointers" are for,
> >> but it could be useful to add some context in the cover letter about the purpose
> >> of this work for the sake of other readers on the list. Useful to refer to the
> >> upcoming scrub support patches.
> >>
> >> BTW, not sure if this was mentioned in the previous lifetime of those
> >> patches, but parent pointers can be used to implement exportfs operation
> >> xfs_fs_fh_to_parent() for "non-connectable" file handles (FILEID_INO32_GEN)
> >> and to implement xfs_fs_get_name(), which would make reconnect_path()
> >> *much* more efficient.
> >
> > However, XFS only uses FILEID_INO32_GEN for directories
> > because they have known parents. For them, we implement ->get_parent()
> > and that means reconnect_path just does ->lookup("..") to find the
> > parents and doesn't need anything special.
> >
> > We use FILEID_INO32_GEN_PARENT for all other types of files to
> > encode the ino # + generation of the parent inode into the handle.
> > That means for any non-dir file handle, our implemention of
> > ->fh_to_parent will get us the parent info as efficiently as
> > possible.
>
> We only encode FILEID_INO32_GEN_PARENT when we are asked for
> a "connectable" file handle, which is NOT the case with name_to_handle_at(2)
> and is the case with nfsd on when NFS share is exported with subtree_check
> options, which AFAIK, is the less common case.
>
> The question is, when we encode a non-connectable file handle
> (FILEID_INO32_GEN), will nfsd benefit from getting a connected file handle
> after decode? (result may always be connected if dentry is already in cache).
>
> > IOWs, parent pointers won't actually speed up filehandle ->
> > dentry reconnection on XFS at all because we already encode parent
> > pointers into the filehandles that need them....
>
> Look at default implementation of ->get_name() in expfs.c and you will
> see why I wrote that xfs_fs_get_name() would make reconnect_path()
> *much* more efficient, even for directories.
If you think it will be a win, then I'm not going to stop you from
implementing and benchmarking it to demonstrate how much faster it
is. Should be pretty simple to benchmark - stat a whole bunch of
files on an NFS client, drop server caches, stat the files again. If
it's a win, the server CPU and IO load should be lower, and the
client side stat rate should be faster....
Cheers,
Dave.
--
Dave Chinner
david@fromorbit.com
next prev parent reply other threads:[~2017-10-22 23:27 UTC|newest]
Thread overview: 61+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-10-18 22:55 [PATCH 00/17] Parent Pointers V3 Allison Henderson
2017-10-18 22:55 ` [PATCH 01/17] Add helper functions xfs_attr_set_args and xfs_attr_remove_args Allison Henderson
2017-10-19 20:03 ` Darrick J. Wong
2017-10-21 1:14 ` Allison Henderson
2017-10-18 22:55 ` [PATCH 02/17] Set up infastructure for deferred attribute operations Allison Henderson
2017-10-19 19:02 ` Darrick J. Wong
2017-10-21 1:08 ` Allison Henderson
2017-10-18 22:55 ` [PATCH 03/17] Add xfs_attr_set_defered and xfs_attr_remove_defered Allison Henderson
2017-10-19 19:13 ` Darrick J. Wong
2017-10-21 1:08 ` Allison Henderson
2017-10-18 22:55 ` [PATCH 04/17] Remove all strlen calls in all xfs_attr_* functions for attr names Allison Henderson
2017-10-19 19:15 ` Darrick J. Wong
2017-10-21 1:10 ` Allison Henderson
2017-10-18 22:55 ` [PATCH 05/17] xfs: get directory offset when adding directory name Allison Henderson
2017-10-18 22:55 ` [PATCH 06/17] xfs: get directory offset when removing " Allison Henderson
2017-10-19 19:17 ` Darrick J. Wong
2017-10-21 1:11 ` Allison Henderson
2017-10-18 22:55 ` [PATCH 07/17] xfs: get directory offset when replacing a " Allison Henderson
2017-10-18 22:55 ` [PATCH 08/17] xfs: add parent pointer support to attribute code Allison Henderson
2017-10-18 22:55 ` [PATCH 09/17] xfs: define parent pointer xattr format Allison Henderson
2017-10-18 22:55 ` [PATCH 10/17] :xfs: extent transaction reservations for parent attributes Allison Henderson
2017-10-19 18:24 ` Darrick J. Wong
[not found] ` <8680e0c1-ada8-06e3-e397-61a5076030be@oracle.com>
2017-10-20 23:45 ` Darrick J. Wong
2017-10-21 0:12 ` Allison Henderson
2017-10-21 1:07 ` Allison Henderson
2017-10-18 22:55 ` [PATCH 11/17] Add the extra space requirements for parent pointer attributes when calculating the minimum log size during mkfs Allison Henderson
2017-10-19 18:13 ` Darrick J. Wong
2017-10-21 1:07 ` Allison Henderson
2017-10-18 22:55 ` [PATCH 12/17] xfs: parent pointer attribute creation Allison Henderson
2017-10-19 19:36 ` Darrick J. Wong
[not found] ` <9185d3e8-4b41-b2d8-294b-934f7d3409f0@oracle.com>
2017-10-21 0:03 ` Darrick J. Wong
2017-10-21 1:11 ` Allison Henderson
2017-10-18 22:55 ` [PATCH 13/17] xfs: add parent attributes to link Allison Henderson
2017-10-19 19:40 ` Darrick J. Wong
2017-10-21 1:12 ` Allison Henderson
2017-10-18 22:55 ` [PATCH 14/17] xfs: remove parent pointers in unlink Allison Henderson
2017-10-19 19:43 ` Darrick J. Wong
2017-10-21 1:12 ` Allison Henderson
2017-10-18 22:55 ` [PATCH 15/17] xfs_bmap_add_attrfork(): re-add error handling from set_attrforkoff() call Allison Henderson
2017-10-19 19:43 ` Darrick J. Wong
2017-10-21 1:13 ` Allison Henderson
2017-10-18 22:55 ` [PATCH 16/17] Add parent pointers to rename Allison Henderson
2017-10-18 22:55 ` [PATCH 17/17] Add the parent pointer support to the superblock version 5 Allison Henderson
2017-10-19 3:57 ` Amir Goldstein
2017-10-19 20:06 ` Darrick J. Wong
2017-10-20 3:18 ` Amir Goldstein
2017-10-19 19:45 ` Darrick J. Wong
2017-10-21 1:13 ` Allison Henderson
2017-10-19 4:11 ` [PATCH 00/17] Parent Pointers V3 Amir Goldstein
2017-10-20 3:22 ` Amir Goldstein
2017-10-21 1:06 ` Allison Henderson
2017-10-20 22:41 ` Dave Chinner
2017-10-21 7:34 ` Amir Goldstein
2017-10-22 23:27 ` Dave Chinner [this message]
2017-10-23 4:30 ` Amir Goldstein
2017-10-23 5:32 ` Dave Chinner
2017-10-23 6:48 ` Amir Goldstein
2017-10-23 8:40 ` Dave Chinner
2017-10-23 9:06 ` Amir Goldstein
2017-10-23 17:14 ` Darrick J. Wong
2017-10-23 19:20 ` Amir Goldstein
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=20171022232741.GU3666@dastard \
--to=david@fromorbit.com \
--cc=allison.henderson@oracle.com \
--cc=amir73il@gmail.com \
--cc=linux-xfs@vger.kernel.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).