Return-Path: Received: from aserp1040.oracle.com ([141.146.126.69]:51175 "EHLO aserp1040.oracle.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751368AbdH2XjW (ORCPT ); Tue, 29 Aug 2017 19:39:22 -0400 Content-Type: text/plain; charset=us-ascii Mime-Version: 1.0 (Mac OS X Mail 9.3 \(3124\)) Subject: Re: [PATCH 0/3] Eliminate delegation self-conflicts From: Chuck Lever In-Reply-To: <20170829215209.GA13385@fieldses.org> Date: Tue, 29 Aug 2017 19:39:14 -0400 Cc: "J. Bruce Fields" , Linux NFS Mailing List , linux-fsdevel , Trond Myklebust Message-Id: <287C6A02-4C3D-4BC8-AA63-A7AAB3F21564@oracle.com> References: <1503697958-6122-1-git-send-email-bfields@redhat.com> <1BD0901E-8339-4993-A012-9F8402BF16EF@oracle.com> <20170829215209.GA13385@fieldses.org> To: "J. Bruce Fields" Sender: linux-nfs-owner@vger.kernel.org List-ID: > On Aug 29, 2017, at 5:52 PM, J. Bruce Fields wrote: > > On Sat, Aug 26, 2017 at 02:06:05PM -0400, Chuck Lever wrote: >> >>> On Aug 25, 2017, at 5:52 PM, J. Bruce Fields wrote: >>> >>> From: "J. Bruce Fields" >>> >>> This is my attempt to fix the NFS server so we don't unnecessarily >>> recall delegations when the operation breaking the delegation comes from >>> the same client that holds the delegation. >>> >>> To do that we need some way to pass the identity of the breaker down >>> through the VFS. >>> >>> I didn't feel like adding another argument to all the VFS functions that >>> this might need to be passed down through. But all of those functions >>> already take a struct inode **delegated inode, so instead I turned that >>> into a single-member struct deleg_ctrl *, which I then added a second >>> member to. >>> >>> I dunno, welcome any more straightforward ways of doing this if anyone >>> has suggestions. >>> >>> My first attempt was to do this by instead checking for conflicts in the >>> caller (nfsd) and then passing down one just one bit telling the lease >>> code conflicts had already been checked so it didn't need to. But >>> that's much too early to check for conflicts, since the caller doesn't >>> have the necessary inode locks yet. >>> >>> I'm still missing testing. Regression tests pass, but I haven't >>> actually confirmed that the self-conflicts are gone! Off to go hack on >>> pynfs.... >> >> FWIW, I observe a lot of delegation recall activity when running > > How are you measuring that? My observation is based on wire traces. >> the git regression tests on an NFSv4.x mount. This is a single >> client. > >> >> Unpack a recent release of the git tarball. >> >> $ cd src/git >> $ make clean >> $ make >> $ make test >> >> Easily scriptable, and you can "cd t/" and run individual >> regression tests if you like. > > Thanks, I'll look into that. > > --b. -- Chuck Lever