linux-nfs.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Trond Myklebust <Trond.Myklebust@netapp.com>
To: Ian Campbell <ian.campbell@citrix.com>
Cc: netdev@vger.kernel.org, linux-nfs@vger.kernel.org
Subject: Re: [PATCH 09/10] nfs: use sk fragment destructors to delay I/O completion until page is released by network stack.
Date: Fri, 15 Jul 2011 10:01:29 -0400	[thread overview]
Message-ID: <1310738489.4381.20.camel@lade.trondhjem.org> (raw)
In-Reply-To: <1310728031-19569-9-git-send-email-ian.campbell@citrix.com>

On Fri, 2011-07-15 at 12:07 +0100, Ian Campbell wrote: 
> Thos prevents an issue where an ACK is delayed, a retransmit is queued (either
> at the RPC or TCP level) and the ACK arrives before the retransmission hits the
> wire. If this happens then the write() system call and the userspace process
> can continue potentially modifying the data before the retransmission occurs.
> 
> NB: this only covers the O_DIRECT write() case. I expect other cases to need
> handling as well.

That is why this belongs entirely in the RPC layer, and really should
not touch the NFS layer.
If you move your callback to the RPC layer and have it notify the
rpc_task when the pages have been sent, then it should be possible to
achieve the same thing.

IOW: Add an extra state machine step after call_decode() which checks if
all the page data has been transmitted and if not, puts the rpc_task on
a wait queue, and has it wait for the fragment destructor callback
before calling rpc_exit_task().

Cheers
  Trond
-- 
Trond Myklebust
Linux NFS client maintainer

NetApp
Trond.Myklebust@netapp.com
www.netapp.com


  reply	other threads:[~2011-07-15 14:02 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-07-15 11:06 [PATCH/RFC 0/10] enable SKB paged fragment lifetime visibility Ian Campbell
2011-07-15 11:07 ` [PATCH 01/10] mm: Make some struct page's const Ian Campbell
2011-07-15 11:07 ` [PATCH 02/10] mm: use const struct page for r/o page-flag accessor methods Ian Campbell
2011-07-15 11:07 ` [PATCH 03/10] net: add APIs for manipulating skb page fragments Ian Campbell
2011-07-15 22:34   ` Michał Mirosław
2011-07-15 11:07 ` [PATCH 04/10] net: convert core to skb paged frag APIs Ian Campbell
2011-07-15 11:07 ` [PATCH 05/10] net: convert protocols to SKB " Ian Campbell
2011-07-15 11:07 ` [PATCH 06/10] net: convert drivers to paged frag API Ian Campbell
2011-07-15 11:07 ` [PATCH 07/10] net: add support for per-paged-fragment destructors Ian Campbell
2011-07-15 11:07 ` [PATCH 08/10] net: add paged frag destructor support to kernel_sendpage Ian Campbell
2011-07-15 11:07 ` [PATCH 09/10] nfs: use sk fragment destructors to delay I/O completion until page is released by network stack Ian Campbell
2011-07-15 14:01   ` Trond Myklebust [this message]
2011-07-15 15:21     ` Ian Campbell
2011-07-21 13:18     ` Ian Campbell
2011-07-15 11:07 ` [PATCH 10/10] nfs: debugging for nfs destructor Ian Campbell
2011-07-15 15:17 ` [PATCH/RFC 0/10] enable SKB paged fragment lifetime visibility David Miller
2011-07-15 15:36   ` Ian Campbell

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=1310738489.4381.20.camel@lade.trondhjem.org \
    --to=trond.myklebust@netapp.com \
    --cc=ian.campbell@citrix.com \
    --cc=linux-nfs@vger.kernel.org \
    --cc=netdev@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).