aboutsummaryrefslogtreecommitdiffstats
path: root/fs/nfsd
diff options
context:
space:
mode:
authorJ. Bruce Fields <bfields@redhat.com>2010-11-18 08:30:33 -0500
committerJ. Bruce Fields <bfields@redhat.com>2011-01-11 15:04:10 -0500
commit0d7bb71907546b2baf15d78edd3e508e12963dbf (patch)
tree4ccdc54a5c95701455d0060f9b7106253e35af59 /fs/nfsd
parent77a3569d6c4e14e89fa628df383b6dccc0cce6be (diff)
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>
Diffstat (limited to 'fs/nfsd')
-rw-r--r--fs/nfsd/nfs4state.c6
-rw-r--r--fs/nfsd/nfs4xdr.c8
-rw-r--r--fs/nfsd/xdr4.h2
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,
1800out: 1800out:
1801 /* Hold a session reference until done processing the compound. */ 1801 /* Hold a session reference until done processing the compound. */
1802 if (cstate->session) { 1802 if (cstate->session) {
1803 struct nfs4_client *clp = session->se_client;
1804
1803 nfsd4_get_session(cstate->session); 1805 nfsd4_get_session(cstate->session);
1804 atomic_inc(&session->se_client->cl_refcount); 1806 atomic_inc(&clp->cl_refcount);
1807 if (clp->cl_cb_state == NFSD4_CB_DOWN)
1808 seq->status_flags |= SEQ4_STATUS_CB_PATH_DOWN;
1805 } 1809 }
1806 kfree(conn); 1810 kfree(conn);
1807 spin_unlock(&client_lock); 1811 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,
3137 WRITE32(seq->seqid); 3137 WRITE32(seq->seqid);
3138 WRITE32(seq->slotid); 3138 WRITE32(seq->slotid);
3139 WRITE32(seq->maxslots); 3139 WRITE32(seq->maxslots);
3140 /* 3140 /* For now: target_maxslots = maxslots */
3141 * FIXME: for now:
3142 * target_maxslots = maxslots
3143 * status_flags = 0
3144 */
3145 WRITE32(seq->maxslots); 3141 WRITE32(seq->maxslots);
3146 WRITE32(0); 3142 WRITE32(seq->status_flags);
3147 3143
3148 ADJUST_ARGS(); 3144 ADJUST_ARGS();
3149 resp->cstate.datap = p; /* DRC cache data pointer */ 3145 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 {
378 u32 cachethis; /* request */ 378 u32 cachethis; /* request */
379#if 0 379#if 0
380 u32 target_maxslots; /* response */ 380 u32 target_maxslots; /* response */
381 u32 status_flags; /* response */
382#endif /* not yet */ 381#endif /* not yet */
382 u32 status_flags; /* response */
383}; 383};
384 384
385struct nfsd4_destroy_session { 385struct nfsd4_destroy_session {