diff options
| author | J. Bruce Fields <bfields@redhat.com> | 2010-11-18 16:30:33 +0300 | 
|---|---|---|
| committer | J. Bruce Fields <bfields@redhat.com> | 2011-01-11 23:04:10 +0300 | 
| commit | 0d7bb71907546b2baf15d78edd3e508e12963dbf (patch) | |
| tree | 4ccdc54a5c95701455d0060f9b7106253e35af59 | |
| parent | 77a3569d6c4e14e89fa628df383b6dccc0cce6be (diff) | |
| download | linux-0d7bb71907546b2baf15d78edd3e508e12963dbf.tar.xz | |
nfsd4: set sequence flag when backchannel is down
Implement the SEQ4_STATUS_CB_PATH_DOWN flag.
Signed-off-by: J. Bruce Fields <bfields@redhat.com>
| -rw-r--r-- | fs/nfsd/nfs4state.c | 6 | ||||
| -rw-r--r-- | fs/nfsd/nfs4xdr.c | 8 | ||||
| -rw-r--r-- | fs/nfsd/xdr4.h | 2 | 
3 files changed, 8 insertions, 8 deletions
diff --git a/fs/nfsd/nfs4state.c b/fs/nfsd/nfs4state.c index 919ad25660d6..15bd1cc77de7 100644 --- a/fs/nfsd/nfs4state.c +++ b/fs/nfsd/nfs4state.c @@ -1800,8 +1800,12 @@ nfsd4_sequence(struct svc_rqst *rqstp,  out:  	/* Hold a session reference until done processing the compound. */  	if (cstate->session) { +		struct nfs4_client *clp = session->se_client; +  		nfsd4_get_session(cstate->session); -		atomic_inc(&session->se_client->cl_refcount); +		atomic_inc(&clp->cl_refcount); +		if (clp->cl_cb_state == NFSD4_CB_DOWN) +			seq->status_flags |= SEQ4_STATUS_CB_PATH_DOWN;  	}  	kfree(conn);  	spin_unlock(&client_lock); diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c index 4ff2c9e0b276..956629b9cdc9 100644 --- a/fs/nfsd/nfs4xdr.c +++ b/fs/nfsd/nfs4xdr.c @@ -3137,13 +3137,9 @@ nfsd4_encode_sequence(struct nfsd4_compoundres *resp, int nfserr,  	WRITE32(seq->seqid);  	WRITE32(seq->slotid);  	WRITE32(seq->maxslots); -	/* -	 * FIXME: for now: -	 *   target_maxslots = maxslots -	 *   status_flags = 0 -	 */ +	/* For now: target_maxslots = maxslots */  	WRITE32(seq->maxslots); -	WRITE32(0); +	WRITE32(seq->status_flags);  	ADJUST_ARGS();  	resp->cstate.datap = p; /* DRC cache data pointer */ diff --git a/fs/nfsd/xdr4.h b/fs/nfsd/xdr4.h index 3a7aa4d98c1f..366401e1a536 100644 --- a/fs/nfsd/xdr4.h +++ b/fs/nfsd/xdr4.h @@ -378,8 +378,8 @@ struct nfsd4_sequence {  	u32			cachethis;		/* request */  #if 0  	u32			target_maxslots;	/* response */ -	u32			status_flags;		/* response */  #endif /* not yet */ +	u32			status_flags;		/* response */  };  struct nfsd4_destroy_session {  | 
