[pnfs] [PATCH 04/23] 2.6-latest pnfs client no lease update in nfs41_sequence_done for ds
Benny Halevy
bhalevy at panasas.com
Sun Dec 23 04:50:29 EST 2007
On Dec. 13, 2007, 22:51 +0200, andros at umich.edu wrote:
<snip>
> From: Andy Adamson <andros at umich.edu>
>
> Allow a NULL nfs_client parameter to nfs41_sequence_done.
>
> The data server has no lease to update. There is no way to reference the
> data server's struct nfs_client because we don't keep one.
>
> The use of struct nfs_client for data server session creation will
> will probably be replaced with a structure with only relevant fields.
>
> Signed-off by: Andy Adamson<andros at umich.edu>
> ---
> fs/nfs/nfs4proc.c | 10 +++++++---
> 1 files changed, 7 insertions(+), 3 deletions(-)
>
> diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c
> index 0185cae..594dabc 100644
> --- a/fs/nfs/nfs4proc.c
> +++ b/fs/nfs/nfs4proc.c
> @@ -248,6 +248,10 @@ int nfs4_wait_bit_interruptible(void *word)
> }
>
> #ifdef CONFIG_NFS_V4_1
> +/* For pNFS filelayout data servers:
> + * the nfs_client is NULL - to signal no lease update.
> + * session is the data server.
> + */
> static int nfs41_sequence_done(struct nfs_client *clp,
> struct nfs4_session *session,
> struct nfs41_sequence_res *res, int status)
> @@ -256,8 +260,6 @@ static int nfs41_sequence_done(struct nfs_client *clp,
> struct nfs4_slot_table *tbl;
> struct nfs4_slot *slot;
>
> - BUG_ON(clp == NULL);
> -
I want to submit this patch to the nfs41 branch so how about
putting this bug on inside #if !defined(CONFIG_PNFS) rather than
deleting it?
Benny
> tbl = &session->fore_channel.slot_table;
> slot = res->sr_slot;
>
> @@ -280,6 +282,8 @@ static int nfs41_sequence_done(struct nfs_client *clp,
> * The sequence call was successful,
> * Update our lease renewal timers
> */
> + if (!clp)
> + goto no_update;
> timestamp = res->sr_renewal_time;
>
> spin_lock(&clp->cl_lock);
> @@ -287,7 +291,7 @@ static int nfs41_sequence_done(struct nfs_client *clp,
> clp->cl_last_renewal = timestamp;
> spin_unlock(&clp->cl_lock);
> }
> -
> +no_update:
> /* Clear the 'busy' bit on the slot that was used */
> smp_mb__before_clear_bit();
> clear_bit(NFS4_SLOT_BUSY, &slot->flags);
More information about the pNFS
mailing list