From: "J. Bruce Fields" <bfields@fieldses.org>
To: Olga Kornievskaia <olga.kornievskaia@gmail.com>
Cc: "J. Bruce Fields" <bfields@redhat.com>,
linux-nfs <linux-nfs@vger.kernel.org>
Subject: Re: [PATCH v4 5/8] NFSD check stateids against copy stateids
Date: Thu, 1 Aug 2019 14:11:58 -0400 [thread overview]
Message-ID: <20190801181158.GC19461@fieldses.org> (raw)
In-Reply-To: <CAN-5tyEx7-kddfgsvSGAsCD3amMXq-iGLkQN2GdmaXOc19GwkA@mail.gmail.com>
On Thu, Aug 01, 2019 at 02:06:46PM -0400, Olga Kornievskaia wrote:
> On Thu, Aug 1, 2019 at 11:41 AM Olga Kornievskaia
> <olga.kornievskaia@gmail.com> wrote:
> >
> > On Thu, Aug 1, 2019 at 11:13 AM J. Bruce Fields <bfields@fieldses.org> wrote:
> > >
> > > On Thu, Aug 01, 2019 at 10:12:11AM -0400, Olga Kornievskaia wrote:
> > > > On Wed, Jul 31, 2019 at 5:51 PM J. Bruce Fields <bfields@redhat.com> wrote:
> > > > >
> > > > > On Wed, Jul 31, 2019 at 05:10:01PM -0400, Olga Kornievskaia wrote:
> > > > > > I'm having difficulty with this patch because there is no good way to
> > > > > > know when the copy_notify stateid can be freed. What I can propose is
> > > > > > to have the linux client send a FREE_STATEID with the copy_notify
> > > > > > stateid and use that as the trigger to free the state. In that case,
> > > > > > I'll keep a reference on the parent until the FREE_STATEID is
> > > > > > received.
> > > > > >
> > > > > > This is not in the spec (though seems like a good idea to tell the
> > > > > > source server it's ok to clean up) so other implementations might not
> > > > > > choose this approach so we'll have problems with stateids sticking
> > > > > > around.
> > > > >
> > > > > https://tools.ietf.org/html/rfc7862#page-71
> > > > >
> > > > > "If the cnr_lease_time expires while the destination server is
> > > > > still reading the source file, the destination server is allowed
> > > > > to finish reading the file. If the cnr_lease_time expires
> > > > > before the destination server uses READ or READ_PLUS to begin
> > > > > the transfer, the source server can use NFS4ERR_PARTNER_NO_AUTH
> > > > > to inform the destination server that the cnr_lease_time has
> > > > > expired."
> > > > >
> > > > > The spec doesn't really define what "is allowed to finish reading the
> > > > > file" means, but I think the source server should decide somehow whether
> > > > > the target's done. And "hasn't sent a read in cnr_lease_time" seems
> > > > > like a pretty good conservative definition that would be easy to
> > > > > enforce.
> > > >
> > > > "hasn't send a read in cnr_lease_time" is already enforced.
> > > >
> > > > The problem is when the copy did start in normal time, it might take
> > > > unknown time to complete. If we limit copies to all be done with in a
> > > > cnr_lease_time or even some number of that, we'll get into problems
> > > > when files are large enough or network is slow enough that it will
> > > > make this method unusable.
> > >
> > > No, I'm just suggesting that if it's been more than cnr_lease_time since
> > > the target server last sent a read using this stateid, then we could
> > > free the stateid.
> >
> > That's reasonable. Let me do that.
>
> Now that I need a global list for the copy_notify stateids, do you
> have a preference for either to keep it of the nfs4_client structure
> or the nfsd_net structure? I store async copies under the nfs4_client
> structure but the laundromat traverses things in nfsd_net structure.
If copy_notify stateids are associated with a client, then they must
already be reachable from the client somehow so they can be destroyed at
the time the client is, right? I'm saying that without looking at the
code....
--b.
next prev parent reply other threads:[~2019-08-01 18:11 UTC|newest]
Thread overview: 51+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-07-08 19:23 [PATCH v4 0/8] server-side support for "inter" SSC copy Olga Kornievskaia
2019-07-08 19:23 ` [PATCH v4 1/8] NFSD fill-in netloc4 structure Olga Kornievskaia
2019-07-17 21:13 ` J. Bruce Fields
2019-07-22 19:59 ` Olga Kornievskaia
2019-07-30 15:48 ` Olga Kornievskaia
2019-07-30 15:51 ` J. Bruce Fields
2019-07-08 19:23 ` [PATCH v4 2/8] NFSD add ca_source_server<> to COPY Olga Kornievskaia
2019-07-17 21:40 ` J. Bruce Fields
2019-07-22 20:00 ` Olga Kornievskaia
2019-07-08 19:23 ` [PATCH v4 3/8] NFSD return nfs4_stid in nfs4_preprocess_stateid_op Olga Kornievskaia
2019-07-08 19:23 ` [PATCH v4 4/8] NFSD add COPY_NOTIFY operation Olga Kornievskaia
2019-07-09 12:34 ` Anna Schumaker
2019-07-09 15:51 ` Olga Kornievskaia
2019-07-17 22:12 ` J. Bruce Fields
2019-07-17 22:15 ` J. Bruce Fields
2019-07-22 20:03 ` Olga Kornievskaia
2019-07-17 23:07 ` J. Bruce Fields
2019-07-22 20:17 ` Olga Kornievskaia
2019-07-23 20:45 ` J. Bruce Fields
2019-07-30 15:48 ` Olga Kornievskaia
2019-07-30 15:55 ` J. Bruce Fields
2019-07-30 16:13 ` Olga Kornievskaia
2019-07-30 17:10 ` Olga Kornievskaia
2019-07-08 19:23 ` [PATCH v4 5/8] NFSD check stateids against copy stateids Olga Kornievskaia
2019-07-19 22:01 ` J. Bruce Fields
2019-07-22 20:24 ` Olga Kornievskaia
2019-07-23 20:58 ` J. Bruce Fields
2019-07-30 16:03 ` Olga Kornievskaia
2019-07-31 21:10 ` Olga Kornievskaia
2019-07-31 21:51 ` J. Bruce Fields
2019-08-01 14:12 ` Olga Kornievskaia
2019-08-01 15:12 ` J. Bruce Fields
2019-08-01 15:41 ` Olga Kornievskaia
2019-08-01 18:06 ` Olga Kornievskaia
2019-08-01 18:11 ` J. Bruce Fields [this message]
2019-08-01 18:24 ` Olga Kornievskaia
2019-08-01 19:36 ` J. Bruce Fields
2019-08-07 16:02 ` Olga Kornievskaia
2019-08-07 16:08 ` J. Bruce Fields
2019-08-07 16:42 ` Olga Kornievskaia
2019-08-08 11:25 ` J. Bruce Fields
2019-07-08 19:23 ` [PATCH v4 6/8] NFSD generalize nfsd4_compound_state flag names Olga Kornievskaia
2019-07-08 19:23 ` [PATCH v4 7/8] NFSD: allow inter server COPY to have a STALE source server fh Olga Kornievskaia
2019-07-23 21:35 ` J. Bruce Fields
2019-07-30 15:48 ` Olga Kornievskaia
2019-07-08 19:23 ` [PATCH v4 8/8] NFSD add nfs4 inter ssc to nfsd4_copy Olga Kornievskaia
2019-07-09 12:43 ` Anna Schumaker
2019-07-09 15:53 ` Olga Kornievskaia
2019-07-09 3:53 ` [PATCH v4 0/8] server-side support for "inter" SSC copy J. Bruce Fields
2019-07-09 15:47 ` Olga Kornievskaia
2019-07-17 18:05 ` Olga Kornievskaia
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=20190801181158.GC19461@fieldses.org \
--to=bfields@fieldses.org \
--cc=bfields@redhat.com \
--cc=linux-nfs@vger.kernel.org \
--cc=olga.kornievskaia@gmail.com \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.