From: Boaz Harrosh <bharrosh@panasas.com>
To: Trond Myklebust <Trond.Myklebust@netapp.com>
Cc: Jim Rees <rees@umich.edu>, <linux-nfs@vger.kernel.org>,
peter honeyman <honey@citi.umich.edu>
Subject: Re: [PATCH v3 06/25] pnfs: cleanup_layoutcommit
Date: Wed, 27 Jul 2011 14:33:38 -0700 [thread overview]
Message-ID: <4E308432.9000209@panasas.com> (raw)
In-Reply-To: <1311800388.25645.48.camel@lade.trondhjem.org>
On 07/27/2011 01:59 PM, Trond Myklebust wrote:
> On Wed, 2011-07-27 at 13:42 -0700, Boaz Harrosh wrote:
>> On 07/27/2011 01:25 PM, Trond Myklebust wrote:
>>> On Wed, 2011-07-27 at 13:20 -0700, Boaz Harrosh wrote:
>>>> On 07/27/2011 12:53 PM, Trond Myklebust wrote:
>>>>>> diff --git a/fs/nfs/pnfs.h b/fs/nfs/pnfs.h
>>>>>> index bddd8b9..f271425 100644
>>>>>> --- a/fs/nfs/pnfs.h
>>>>>> +++ b/fs/nfs/pnfs.h
>>>>>> @@ -113,6 +113,9 @@ struct pnfs_layoutdriver_type {
>>>>>> struct xdr_stream *xdr,
>>>>>> const struct nfs4_layoutreturn_args *args);
>>>>>>
>>>>>> + void (*cleanup_layoutcommit) (struct pnfs_layout_hdr *layoutid,
>>>>>> + struct nfs4_layoutcommit_data *data);
>>>>>> +
>>>>>> void (*encode_layoutcommit) (struct pnfs_layout_hdr *layoutid,
>>>>>> struct xdr_stream *xdr,
>>>>>> const struct nfs4_layoutcommit_args *args);
>>>>>
>>>>> This really needs to go. We should have
>>>>>
>>>>> int (*layoutcommit)()...
>>>>>
>>>>> instead of 'encode' and 'cleanup' methods...
>>>>>
>>>>
>>>> Theoretically it is not possible because the blocks-layout protocol mandates
>>>> different handling depending on the "error" response from the Server which
>>>> will be received on RPC done.
>>>
>>> ???? If the blocks code is in charge of actually doing the RPC call, why
>>> would it not be able to perform its own error handling?
>>>
>>
>> Is it? I thought it was the Generic layer that was Initiating the layoutcommit
>> (From the pnfs_layoutcommit_inode called from nfs_write_inode)
>>
>> The LD only has a chance to encode the payload on rpc-setup and here the blocks
>> code needs cleanup depending on the return-status of rpc-done
>>
>> [I do think that setup and done might be better names to reflect the rpc states)
>
> I'm suggesting replacing the version in the generic layer with
> per-layout-type variants. When the only thing that is common between the
> 3 variants is a couple of lines of xdr, then it doesn't make sense IMO
> to try to share.
>
You lost me. What are you suggesting to replace? pnfs_layoutcommit_inode?
nfs4_proc_layoutcommit? nfs4_xdr_enc_layoutcommit? At what level do you want to
switch to a per LD handling.
If I look at the all layoutcommit stack the actual xdr encoding is the least of
the common code. The housekeeping is the most of it. I do not see a clear point
in current code that we can make a clean cut. And that gives us a place that:
1. Already have an xdr buffer to encode into.
2. Also sees the return code from layoutcommit_done
We used to allocated the layoutcommit buffer twice and that didn't solve that
problem either. It is two stages of the rpc-state. I don't see how it can be
briged
Boaz
next prev parent reply other threads:[~2011-07-27 21:33 UTC|newest]
Thread overview: 55+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-07-27 18:40 [PATCH v3 00/25] add block layout driver to pnfs client Jim Rees
2011-07-27 18:40 ` [PATCH v3 01/25] pnfs: GETDEVICELIST Jim Rees
2011-07-27 19:33 ` Trond Myklebust
2011-07-28 18:27 ` Benny Halevy
2011-07-27 18:40 ` [PATCH v3 02/25] pnfs: add set-clear layoutdriver interface Jim Rees
2011-07-27 19:36 ` Trond Myklebust
2011-07-27 18:40 ` [PATCH v3 03/25] NFS41: Let layoutcommit handle multiple segments Jim Rees
2011-07-27 20:05 ` Boaz Harrosh
2011-07-27 20:22 ` Trond Myklebust
2011-07-27 20:33 ` Boaz Harrosh
2011-07-27 20:58 ` Jim Rees
2011-07-27 21:09 ` Boaz Harrosh
2011-07-27 23:40 ` Jim Rees
2011-07-28 0:12 ` Boaz Harrosh
2011-07-28 2:02 ` tao.peng
2011-07-28 3:19 ` Jim Rees
2011-07-27 18:40 ` [PATCH v3 04/25] NFS41: save layoutcommit cred after first successful layoutget Jim Rees
2011-07-27 19:47 ` Trond Myklebust
2011-07-28 3:29 ` tao.peng
2011-07-27 18:40 ` [PATCH v3 05/25] pnfs: ask for layout_blksize and save it in nfs_server Jim Rees
2011-07-27 18:40 ` [PATCH v3 06/25] pnfs: cleanup_layoutcommit Jim Rees
2011-07-27 19:53 ` Trond Myklebust
2011-07-27 20:20 ` Boaz Harrosh
2011-07-27 20:25 ` Trond Myklebust
2011-07-27 20:42 ` Boaz Harrosh
2011-07-27 20:59 ` Trond Myklebust
2011-07-27 21:33 ` Boaz Harrosh [this message]
2011-07-27 18:40 ` [PATCH v3 07/25] pnfsblock: add blocklayout Kconfig option, Makefile, and stubs Jim Rees
2011-07-27 18:40 ` [PATCH v3 08/25] pnfsblock: basic extent code Jim Rees
2011-07-27 18:40 ` [PATCH v3 09/25] pnfsblock: add device operations Jim Rees
2011-07-27 18:40 ` [PATCH v3 10/25] pnfsblock: remove " Jim Rees
2011-07-27 18:40 ` [PATCH v3 11/25] pnfsblock: lseg alloc and free Jim Rees
2011-07-27 18:40 ` [PATCH v3 12/25] pnfsblock: merge extents Jim Rees
2011-07-27 18:40 ` [PATCH v3 13/25] pnfsblock: call and parse getdevicelist Jim Rees
2011-07-27 18:40 ` [PATCH v3 14/25] pnfsblock: xdr decode pnfs_block_layout4 Jim Rees
2011-07-27 18:40 ` [PATCH v3 15/25] pnfsblock: bl_find_get_extent Jim Rees
2011-07-27 18:40 ` [PATCH v3 16/25] pnfsblock: add extent manipulation functions Jim Rees
2011-07-27 18:40 ` [PATCH v3 17/25] pnfsblock: merge rw extents Jim Rees
2011-07-27 18:40 ` [PATCH v3 18/25] pnfsblock: encode_layoutcommit Jim Rees
2011-07-27 18:40 ` [PATCH v3 19/25] pnfsblock: cleanup_layoutcommit Jim Rees
2011-07-27 18:40 ` [PATCH v3 20/25] pnfsblock: bl_read_pagelist Jim Rees
2011-07-27 20:09 ` Trond Myklebust
2011-07-27 18:40 ` [PATCH v3 21/25] pnfsblock: bl_write_pagelist Jim Rees
2011-07-27 20:11 ` Trond Myklebust
2011-07-27 18:40 ` [PATCH v3 22/25] pnfsblock: note written INVAL areas for layoutcommit Jim Rees
2011-07-27 20:13 ` Trond Myklebust
2011-07-28 2:30 ` tao.peng
2011-07-27 18:40 ` [PATCH v3 23/25] pnfsblock: use pageio_ops api Jim Rees
2011-07-27 20:15 ` Trond Myklebust
2011-07-28 2:27 ` tao.peng
2011-07-28 3:52 ` Trond Myklebust
2011-07-28 4:10 ` tao.peng
2011-07-27 18:40 ` [PATCH v3 24/25] pnfsblock: write_pagelist handle zero invalid extents Jim Rees
2011-07-27 18:40 ` [PATCH v3 25/25] NFS41: Drop lseg ref before fallthru to MDS Jim Rees
2011-07-27 20:16 ` 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=4E308432.9000209@panasas.com \
--to=bharrosh@panasas.com \
--cc=Trond.Myklebust@netapp.com \
--cc=honey@citi.umich.edu \
--cc=linux-nfs@vger.kernel.org \
--cc=rees@umich.edu \
/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).