linux-xfs.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
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

  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).