[pnfs] [PATCH] save client flags for exchange id
Marc Eshel
eshel at almaden.ibm.com
Tue Jun 5 12:29:46 EDT 2007
Hi Andy.
I think that we need to talk about it some more maybe in out status
meeting. For now we need a working server and I see nothing wrong with
taking the client indication (flag) that it is trying to exchange id with
an MDS or DS. Can you please push "fix recall layout for fsid" patch.
Thanks, Marc.
androsadamson at gmail.com wrote on 06/05/2007 08:55:08 AM:
> Hi Marc
>
> For the 4.1-sessions branch, nfsd4_set_ex_flags() returns the
> correct flags - we don't care what the client sends, and should not
> save the eia_flags.
>
> For the master branch, here is what I think we need to do.
>
> As in the 4.1-sessions case, Return support for referrals, no
> support for migration.
> EXCHGID4_FLAG_SUPP_MOVED_REFER yes
> EXCHGID4_FLAG_SUPP_MOVED_MIGR no
>
> As for the pNFS flags:
>
> Just like the 4.1-sessions branch, we always set this, because we
> support sessions w/o pNFS.
> EXCHGID4_FLAG_USE_NON_PNFS yes
> Now we have the chicken-or-egg problem. We currently can only tell
> if we support pNFS via the export operations functions such as
> export_ops->layout_type(). But the server doesn't know about any of
> it's exports until the first filehandle show up, and an upcall is
> made to get the export struct, and the first filehandle for an
> export won't appear until after the session is setup.
>
> If the server is acting as an MDS, we can't tell at EXCHANGE_ID time.
> If the server is acting only as a DS, we can't tell at EXCHANGE_ID time.
> If the server is acting as an MDS and as a DS, we currently can't
> tell the difference between a 2nd MDS session or the first DS
> session at EXCHANGE_ID time.
>
> We may need to push configuration information down to the NFSv4.1
> pNFS MDS/DS server, probably via adding to the existing proc
> interface; or possibly query the file system with a new export_op
> when we get the first filehandle (PUTROOTFH), because draft-ietf-
> nfsv4-minorversion1-10 has the following MUST (line 23843):
> 23825 The response to the SEQUENCE operation contains a word of
status
> 23826 flags (sr_status_flags) that that can provide to the client
> 23827 information related to the status of the client's lock state
and
>
> 23828 communications paths. Note that any status bits relating to
lock
> 23829 state are MAY reset when lock state is lost due to a
> server reboot or
> 23830 the establishment of a new client instance. Note that
> if the client
>
> 23831 ID implied by sa_sessionid was established with
> 23832
> 23833 (
> 23834 eir_flags
> 23835 & (
> 23836 EXCHGID4_FLAG_USE_PNFS_DS
> 23837 | EXCHGID4_FLAG_USE_PNFS_MDS
>
> 23838 | EXCHGID4_FLAG_USE_NON_PNFS
> 23839 )
> 23840 ) == EXCHGID4_FLAG_USE_PNFS_DS)
> 23841
> 23842 in the EXCHANGE_ID results (i.e the client ID is only for
data
> 23843 servers), then sr_status_flags MUST always be zero.
>
> Until then, the master branch should simply set these flags as follows:
> EXCHGID4_FLAG_USE_PNFS_MDS yes
> EXCHGID4_FLAG_USE_PNFS_DS yes
> I don't see any reason to pay attention to what the client sends.
> In any event, I want to do this inside nfsd4_set_ex_flags(), not
> copy the input flags prior to the call.
>
> If we are in agreement, I'll provide the patch...
>
> -->Andy
> On 6/4/07, Marc Eshel <eshel at almaden.ibm.com> wrote:
> From: Marc Eshel <eshel at almaden.ibm.com>
>
>
> ---
>
> fs/nfsd/nfs4state.c | 1 +
> 1 files changed, 1 insertions(+), 0 deletions(-)
>
> diff --git a/fs/nfsd/nfs4state.c b/fs/nfsd/nfs4state.c
> index a5e4dc7..2fe5414 100644
> --- a/fs/nfsd/nfs4state.c
> +++ b/fs/nfsd/nfs4state.c
> @@ -1202,6 +1202,7 @@ out_copy:
> clid->clientid.cl_id = new->cl_clientid.cl_id;
>
> new->cl_seqid = clid->seqid = 1;
> + new->cl_exchange_flags = clid->flags;
> nfsd4_set_ex_flags(new, clid);
>
> dprintk("nfsd4_exchange_id seqid %d flags %x\n",
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://linux-nfs.org/pipermail/pnfs/attachments/20070605/3138bd67/attachment.htm
More information about the pNFS
mailing list