From: Chuck Lever <chuck.lever@oracle.com>
To: Trond Myklebust <Trond.Myklebust@netapp.com>
Cc: linux-nfs@vger.kernel.org
Subject: Re: [PATCH 1/2] NFS: Clean up nfs_update_request()
Date: Wed, 18 Jun 2008 18:05:50 -0400 [thread overview]
Message-ID: <485986BE.1030401@oracle.com> (raw)
In-Reply-To: <1213822899.25182.21.camel@localhost>
[-- Attachment #1: Type: text/plain, Size: 1726 bytes --]
Trond Myklebust wrote:
> On Wed, 2008-06-18 at 16:40 -0400, Chuck Lever wrote:
>>> No. If the page is being written out, then we _must_ release all locks,
>>> wait on the request, and try again. This is not a change compared to the
>>> previous incarnation.
>> Right, understood... but I think the logic added here is harder to
>> understand and thus more prone to break when something changes than the
>> previous incarnation was.
>
> I don't understand: The behaviour and the results are exactly the same
> as before. All that has happened is that the existing code to update a
> request got shuffled into a separate function. If the request is locked,
> so that we can't update it, we still wait for the request to become
> unlocked, then release it and try the lookup again. There is no new
> logic...
Sorry, I'm not being clear. I do realize that this patch is intended as
a clean up and not a behavioral change.
What I'm trying to say is the new function with the EAGAIN return code
is spaghetti. Don't get me wrong, I like Italian food.
I do agree that nfs_update_request() in its current state deserves some
clarification and clean up. I'm not sure I like the new code any more
than the old, however.
> One alternative might be to move the code that waits on the lock into
> nfs_try_to_update_request(), but I don't like that idea for two reasons:
>
> 1. waiting on the lock isn't related to updating the request
> 2. Once the request has been unlocked, you _still_ have to return
> to nfs_setup_write_request() because the old request might have
> completed, and been removed from the inode altogether. IOW: you
> still don't get rid of the need to signal the EAGAIN.
[-- Attachment #2: chuck_lever.vcf --]
[-- Type: text/x-vcard, Size: 259 bytes --]
begin:vcard
fn:Chuck Lever
n:Lever;Chuck
org:Oracle Corporation;Corporate Architecture: Linux Projects Group
adr:;;1015 Granger Avenue;Ann Arbor;MI;48104;USA
title:Principal Member of Staff
tel;work:+1 248 614 5091
x-mozilla-html:FALSE
version:2.1
end:vcard
next prev parent reply other threads:[~2008-06-18 22:07 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-06-16 19:23 [PATCH 0/2] More writeback code cleanups Trond Myklebust
[not found] ` <20080616192348.20513.72423.stgit-bi+AKbBUZKY6gyzm1THtWbp2dZbC/Bob@public.gmane.org>
2008-06-16 19:23 ` [PATCH 1/2] NFS: Clean up nfs_update_request() Trond Myklebust
[not found] ` <20080616192348.20513.3284.stgit-bi+AKbBUZKY6gyzm1THtWbp2dZbC/Bob@public.gmane.org>
2008-06-17 21:35 ` Chuck Lever
2008-06-17 21:56 ` Trond Myklebust
2008-06-18 20:40 ` Chuck Lever
2008-06-18 21:01 ` Trond Myklebust
2008-06-18 22:05 ` Chuck Lever [this message]
2008-06-19 21:22 ` Trond Myklebust
2008-06-20 16:52 ` Chuck Lever
2008-06-20 20:36 ` Chuck Lever
2008-06-16 19:23 ` [PATCH 2/2] NFS: Allow redirtying of a completed unstable write Trond Myklebust
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=485986BE.1030401@oracle.com \
--to=chuck.lever@oracle.com \
--cc=Trond.Myklebust@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