From: "J. Bruce Fields" <bfields@redhat.com>
To: Olga Kornievskaia <aglo@umich.edu>
Cc: "J. Bruce Fields" <bfields@fieldses.org>,
Olga Kornievskaia <kolga@netapp.com>,
linux-nfs <linux-nfs@vger.kernel.org>
Subject: Re: [PATCH v6 07/10] NFSD create new stateid for async copy
Date: Thu, 15 Feb 2018 20:43:38 -0500 [thread overview]
Message-ID: <20180216014337.GA3591@parsley.fieldses.org> (raw)
In-Reply-To: <CAN-5tyHOa6SM1Gv+dv=pfQaQ--YTjfkyA6V57wgGic5qEK+jvg@mail.gmail.com>
On Thu, Feb 15, 2018 at 05:18:55PM -0500, Olga Kornievskaia wrote:
> On Fri, Feb 2, 2018 at 4:45 PM, J. Bruce Fields <bfields@redhat.com> wrote:
> > Is it really OK to do a COPY with a delegation stateid? That sounds
> > messy if the delegation is revoked partway through the copy.
>
> Yes, according to the spec, it is ok to use any of the stateids.
>
> RFC 7862 15.2.3
> The ca_dst_stateid MUST refer to a stateid that is valid for a WRITE
> operation and follows the rules for stateids in Sections 8.2.5 and
> 18.32.3 of [RFC5661].... while for an intra-server copy
> ca_src_stateid MUST refer
> to a stateid that is valid for a READ operation and follows the rules
> for stateids in Sections 8.2.5 and 18.22.3 of [RFC5661].
>
> 8.2.5 is the section that says in the decreasing priority to choose
> delegation stateid, locking stateid, open stateid.
>
> Trying to deal with the delegation stateid seems to be rather complex.
> Here's what I could do (which I mentioned before already):
> 1. possibly change the client to never use a delegation stateid.
> 2. for CLOSE/UNLOCK send back ERR_DELAY if copy list is not empty.
> 3. for DELEGRETURN (or when the server initiates CB_RECALL?) kill any
> on-going copies. Change the nfsd copy to send a reply if it was killed
> with a signal. What I'm not sure if when it's killed I get any partial
> bytes from the VFS, I don't think so. I think in that case, the only
> thing that I might reply with is a 0bytes copy. And whatever client
> that did sent a copy with a delegation stateid would deal with
> restarting it with a different stateid.
>
> Having said all that, I'd like to ask why do you think handling
> CLOSE/LOCKU/DELEGRETURN should be any different for async copy vs what
> is currently there for the synchronous copy. Right now if the server
> receives those operations it does nothing to the on-going synchronous
> copy.
Or for that matter, why should it be different from READ and
WRITE--looks like those can also continue executing after a close, too.
So, good point.
> As you noted, the async copy takes a reference on the parent stateid
> so the state won't go away while the async copy is going on. Why not
> keep async copy same as the synchronous one?
OK, so maybe it's not such a big deal.
I'm still confused about the delegation case, though: a copy can take a
very long time, so we can't just wait for the copy to end before
revoking the delegation. So do we allow the copy to continue
indefinitely even after the delegation stateid it was initiated with has
long ago been revoked?
Maybe it's not a problem. I guess I'm having trouble remembering why
copies (or IO in general) uses stateids in the first place....
--b.
next prev parent reply other threads:[~2018-02-16 1:43 UTC|newest]
Thread overview: 48+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-10-24 17:47 [PATCH v6 00/10] NFSD support for asynchronous COPY Olga Kornievskaia
2017-10-24 17:47 ` [PATCH v6 01/10] NFSD CB_OFFLOAD xdr Olga Kornievskaia
2018-01-25 16:43 ` J. Bruce Fields
2018-01-26 15:16 ` Olga Kornievskaia
2017-10-24 17:47 ` [PATCH v6 02/10] NFSD OFFLOAD_STATUS xdr Olga Kornievskaia
2017-10-24 17:47 ` [PATCH v6 03/10] NFSD OFFLOAD_CANCEL xdr Olga Kornievskaia
2017-10-24 17:47 ` [PATCH v6 04/10] NFSD xdr callback stateid in async COPY reply Olga Kornievskaia
2017-10-24 17:47 ` [PATCH v6 05/10] NFSD first draft of async copy Olga Kornievskaia
2018-01-25 22:04 ` J. Bruce Fields
2018-01-26 15:17 ` Olga Kornievskaia
2018-02-15 19:59 ` Olga Kornievskaia
2018-02-15 20:06 ` J. Bruce Fields
2018-01-25 22:29 ` J. Bruce Fields
2018-01-26 15:17 ` Olga Kornievskaia
2018-01-26 21:34 ` J. Bruce Fields
2018-02-02 19:50 ` Olga Kornievskaia
2018-02-02 19:55 ` J. Bruce Fields
2017-10-24 17:47 ` [PATCH v6 06/10] NFSD return nfs4_stid in nfs4_preprocess_stateid_op Olga Kornievskaia
2017-10-24 17:47 ` [PATCH v6 07/10] NFSD create new stateid for async copy Olga Kornievskaia
2018-01-26 21:37 ` J. Bruce Fields
2018-01-26 21:59 ` J. Bruce Fields
2018-02-02 20:45 ` Olga Kornievskaia
2018-02-02 21:45 ` J. Bruce Fields
2018-02-15 22:18 ` Olga Kornievskaia
2018-02-16 1:43 ` J. Bruce Fields [this message]
2018-02-16 16:06 ` Olga Kornievskaia
2018-02-16 18:12 ` J. Bruce Fields
2018-02-16 20:53 ` Olga Kornievskaia
2018-02-20 18:48 ` J. Bruce Fields
2018-03-06 17:15 ` Olga Kornievskaia
2018-03-06 19:33 ` J. Bruce Fields
2017-10-24 17:47 ` [PATCH v6 08/10] NFSD handle OFFLOAD_CANCEL op Olga Kornievskaia
2018-02-16 17:28 ` Olga Kornievskaia
2018-02-16 18:10 ` J. Bruce Fields
2017-10-24 17:47 ` [PATCH v6 09/10] NFSD support OFFLOAD_STATUS Olga Kornievskaia
2017-10-24 17:47 ` [PATCH v6 10/10] NFSD stop queued async copies on client shutdown Olga Kornievskaia
2018-01-25 22:22 ` J. Bruce Fields
2018-01-26 15:17 ` Olga Kornievskaia
2017-11-03 19:57 ` [PATCH v6 00/10] NFSD support for asynchronous COPY Olga Kornievskaia
2017-11-10 15:01 ` Olga Kornievskaia
2017-11-14 0:48 ` J. Bruce Fields
2017-11-28 20:28 ` Olga Kornievskaia
2017-11-30 20:18 ` J. Bruce Fields
2017-11-30 23:03 ` Olga Kornievskaia
2017-12-04 21:32 ` J. Bruce Fields
[not found] ` <CAN-5tyEVSwBmPMtUBJYDdLi7FK2MNMGuDQrrsvp776zD3Jcw0w@mail.gmail.com>
2018-01-22 16:51 ` Olga Kornievskaia
2018-01-25 22:33 ` J. Bruce Fields
2018-01-26 15:16 ` 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=20180216014337.GA3591@parsley.fieldses.org \
--to=bfields@redhat.com \
--cc=aglo@umich.edu \
--cc=bfields@fieldses.org \
--cc=kolga@netapp.com \
--cc=linux-nfs@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).