aboutsummaryrefslogtreecommitdiffstats
path: root/fs
diff options
context:
space:
mode:
authorBenny Halevy <bhalevy@panasas.com>2008-07-04 07:38:33 -0400
committerJ. Bruce Fields <bfields@citi.umich.edu>2008-07-04 16:21:30 -0400
commit695e12f8d2917378d3b93059209e17415de96204 (patch)
tree12456e9a2ff2d1594e7d16083d5f74d0cf3546e5 /fs
parente86322f611eef95aafaf726fd3965e5b211f1985 (diff)
nfsd: tabulate nfs4 xdr encoding functions
In preparation for minorversion 1 All encoders now return an nfserr status (typically their nfserr argument). Unsupported ops go through nfsd4_encode_operation too, so use nfsd4_encode_noop to encode nothing for their reply body. Signed-off-by: Benny Halevy <bhalevy@panasas.com> Signed-off-by: J. Bruce Fields <bfields@citi.umich.edu>
Diffstat (limited to 'fs')
-rw-r--r--fs/nfsd/nfs4xdr.c205
1 files changed, 91 insertions, 114 deletions
diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c
index a40bec53fa66..9b6a9bafc6b4 100644
--- a/fs/nfsd/nfs4xdr.c
+++ b/fs/nfsd/nfs4xdr.c
@@ -1950,7 +1950,7 @@ fail:
1950 return -EINVAL; 1950 return -EINVAL;
1951} 1951}
1952 1952
1953static void 1953static __be32
1954nfsd4_encode_access(struct nfsd4_compoundres *resp, __be32 nfserr, struct nfsd4_access *access) 1954nfsd4_encode_access(struct nfsd4_compoundres *resp, __be32 nfserr, struct nfsd4_access *access)
1955{ 1955{
1956 ENCODE_HEAD; 1956 ENCODE_HEAD;
@@ -1961,9 +1961,10 @@ nfsd4_encode_access(struct nfsd4_compoundres *resp, __be32 nfserr, struct nfsd4_
1961 WRITE32(access->ac_resp_access); 1961 WRITE32(access->ac_resp_access);
1962 ADJUST_ARGS(); 1962 ADJUST_ARGS();
1963 } 1963 }
1964 return nfserr;
1964} 1965}
1965 1966
1966static void 1967static __be32
1967nfsd4_encode_close(struct nfsd4_compoundres *resp, __be32 nfserr, struct nfsd4_close *close) 1968nfsd4_encode_close(struct nfsd4_compoundres *resp, __be32 nfserr, struct nfsd4_close *close)
1968{ 1969{
1969 ENCODE_SEQID_OP_HEAD; 1970 ENCODE_SEQID_OP_HEAD;
@@ -1975,10 +1976,11 @@ nfsd4_encode_close(struct nfsd4_compoundres *resp, __be32 nfserr, struct nfsd4_c
1975 ADJUST_ARGS(); 1976 ADJUST_ARGS();
1976 } 1977 }
1977 ENCODE_SEQID_OP_TAIL(close->cl_stateowner); 1978 ENCODE_SEQID_OP_TAIL(close->cl_stateowner);
1979 return nfserr;
1978} 1980}
1979 1981
1980 1982
1981static void 1983static __be32
1982nfsd4_encode_commit(struct nfsd4_compoundres *resp, __be32 nfserr, struct nfsd4_commit *commit) 1984nfsd4_encode_commit(struct nfsd4_compoundres *resp, __be32 nfserr, struct nfsd4_commit *commit)
1983{ 1985{
1984 ENCODE_HEAD; 1986 ENCODE_HEAD;
@@ -1988,9 +1990,10 @@ nfsd4_encode_commit(struct nfsd4_compoundres *resp, __be32 nfserr, struct nfsd4_
1988 WRITEMEM(commit->co_verf.data, 8); 1990 WRITEMEM(commit->co_verf.data, 8);
1989 ADJUST_ARGS(); 1991 ADJUST_ARGS();
1990 } 1992 }
1993 return nfserr;
1991} 1994}
1992 1995
1993static void 1996static __be32
1994nfsd4_encode_create(struct nfsd4_compoundres *resp, __be32 nfserr, struct nfsd4_create *create) 1997nfsd4_encode_create(struct nfsd4_compoundres *resp, __be32 nfserr, struct nfsd4_create *create)
1995{ 1998{
1996 ENCODE_HEAD; 1999 ENCODE_HEAD;
@@ -2003,6 +2006,7 @@ nfsd4_encode_create(struct nfsd4_compoundres *resp, __be32 nfserr, struct nfsd4_
2003 WRITE32(create->cr_bmval[1]); 2006 WRITE32(create->cr_bmval[1]);
2004 ADJUST_ARGS(); 2007 ADJUST_ARGS();
2005 } 2008 }
2009 return nfserr;
2006} 2010}
2007 2011
2008static __be32 2012static __be32
@@ -2023,9 +2027,10 @@ nfsd4_encode_getattr(struct nfsd4_compoundres *resp, __be32 nfserr, struct nfsd4
2023 return nfserr; 2027 return nfserr;
2024} 2028}
2025 2029
2026static void 2030static __be32
2027nfsd4_encode_getfh(struct nfsd4_compoundres *resp, __be32 nfserr, struct svc_fh *fhp) 2031nfsd4_encode_getfh(struct nfsd4_compoundres *resp, __be32 nfserr, struct svc_fh **fhpp)
2028{ 2032{
2033 struct svc_fh *fhp = *fhpp;
2029 unsigned int len; 2034 unsigned int len;
2030 ENCODE_HEAD; 2035 ENCODE_HEAD;
2031 2036
@@ -2036,6 +2041,7 @@ nfsd4_encode_getfh(struct nfsd4_compoundres *resp, __be32 nfserr, struct svc_fh
2036 WRITEMEM(&fhp->fh_handle.fh_base, len); 2041 WRITEMEM(&fhp->fh_handle.fh_base, len);
2037 ADJUST_ARGS(); 2042 ADJUST_ARGS();
2038 } 2043 }
2044 return nfserr;
2039} 2045}
2040 2046
2041/* 2047/*
@@ -2063,7 +2069,7 @@ nfsd4_encode_lock_denied(struct nfsd4_compoundres *resp, struct nfsd4_lock_denie
2063 ADJUST_ARGS(); 2069 ADJUST_ARGS();
2064} 2070}
2065 2071
2066static void 2072static __be32
2067nfsd4_encode_lock(struct nfsd4_compoundres *resp, __be32 nfserr, struct nfsd4_lock *lock) 2073nfsd4_encode_lock(struct nfsd4_compoundres *resp, __be32 nfserr, struct nfsd4_lock *lock)
2068{ 2074{
2069 ENCODE_SEQID_OP_HEAD; 2075 ENCODE_SEQID_OP_HEAD;
@@ -2077,16 +2083,18 @@ nfsd4_encode_lock(struct nfsd4_compoundres *resp, __be32 nfserr, struct nfsd4_lo
2077 nfsd4_encode_lock_denied(resp, &lock->lk_denied); 2083 nfsd4_encode_lock_denied(resp, &lock->lk_denied);
2078 2084
2079 ENCODE_SEQID_OP_TAIL(lock->lk_replay_owner); 2085 ENCODE_SEQID_OP_TAIL(lock->lk_replay_owner);
2086 return nfserr;
2080} 2087}
2081 2088
2082static void 2089static __be32
2083nfsd4_encode_lockt(struct nfsd4_compoundres *resp, __be32 nfserr, struct nfsd4_lockt *lockt) 2090nfsd4_encode_lockt(struct nfsd4_compoundres *resp, __be32 nfserr, struct nfsd4_lockt *lockt)
2084{ 2091{
2085 if (nfserr == nfserr_denied) 2092 if (nfserr == nfserr_denied)
2086 nfsd4_encode_lock_denied(resp, &lockt->lt_denied); 2093 nfsd4_encode_lock_denied(resp, &lockt->lt_denied);
2094 return nfserr;
2087} 2095}
2088 2096
2089static void 2097static __be32
2090nfsd4_encode_locku(struct nfsd4_compoundres *resp, __be32 nfserr, struct nfsd4_locku *locku) 2098nfsd4_encode_locku(struct nfsd4_compoundres *resp, __be32 nfserr, struct nfsd4_locku *locku)
2091{ 2099{
2092 ENCODE_SEQID_OP_HEAD; 2100 ENCODE_SEQID_OP_HEAD;
@@ -2099,10 +2107,11 @@ nfsd4_encode_locku(struct nfsd4_compoundres *resp, __be32 nfserr, struct nfsd4_l
2099 } 2107 }
2100 2108
2101 ENCODE_SEQID_OP_TAIL(locku->lu_stateowner); 2109 ENCODE_SEQID_OP_TAIL(locku->lu_stateowner);
2110 return nfserr;
2102} 2111}
2103 2112
2104 2113
2105static void 2114static __be32
2106nfsd4_encode_link(struct nfsd4_compoundres *resp, __be32 nfserr, struct nfsd4_link *link) 2115nfsd4_encode_link(struct nfsd4_compoundres *resp, __be32 nfserr, struct nfsd4_link *link)
2107{ 2116{
2108 ENCODE_HEAD; 2117 ENCODE_HEAD;
@@ -2112,10 +2121,11 @@ nfsd4_encode_link(struct nfsd4_compoundres *resp, __be32 nfserr, struct nfsd4_li
2112 WRITECINFO(link->li_cinfo); 2121 WRITECINFO(link->li_cinfo);
2113 ADJUST_ARGS(); 2122 ADJUST_ARGS();
2114 } 2123 }
2124 return nfserr;
2115} 2125}
2116 2126
2117 2127
2118static void 2128static __be32
2119nfsd4_encode_open(struct nfsd4_compoundres *resp, __be32 nfserr, struct nfsd4_open *open) 2129nfsd4_encode_open(struct nfsd4_compoundres *resp, __be32 nfserr, struct nfsd4_open *open)
2120{ 2130{
2121 ENCODE_SEQID_OP_HEAD; 2131 ENCODE_SEQID_OP_HEAD;
@@ -2178,9 +2188,10 @@ nfsd4_encode_open(struct nfsd4_compoundres *resp, __be32 nfserr, struct nfsd4_op
2178 /* XXX save filehandle here */ 2188 /* XXX save filehandle here */
2179out: 2189out:
2180 ENCODE_SEQID_OP_TAIL(open->op_stateowner); 2190 ENCODE_SEQID_OP_TAIL(open->op_stateowner);
2191 return nfserr;
2181} 2192}
2182 2193
2183static void 2194static __be32
2184nfsd4_encode_open_confirm(struct nfsd4_compoundres *resp, __be32 nfserr, struct nfsd4_open_confirm *oc) 2195nfsd4_encode_open_confirm(struct nfsd4_compoundres *resp, __be32 nfserr, struct nfsd4_open_confirm *oc)
2185{ 2196{
2186 ENCODE_SEQID_OP_HEAD; 2197 ENCODE_SEQID_OP_HEAD;
@@ -2193,9 +2204,10 @@ nfsd4_encode_open_confirm(struct nfsd4_compoundres *resp, __be32 nfserr, struct
2193 } 2204 }
2194 2205
2195 ENCODE_SEQID_OP_TAIL(oc->oc_stateowner); 2206 ENCODE_SEQID_OP_TAIL(oc->oc_stateowner);
2207 return nfserr;
2196} 2208}
2197 2209
2198static void 2210static __be32
2199nfsd4_encode_open_downgrade(struct nfsd4_compoundres *resp, __be32 nfserr, struct nfsd4_open_downgrade *od) 2211nfsd4_encode_open_downgrade(struct nfsd4_compoundres *resp, __be32 nfserr, struct nfsd4_open_downgrade *od)
2200{ 2212{
2201 ENCODE_SEQID_OP_HEAD; 2213 ENCODE_SEQID_OP_HEAD;
@@ -2208,6 +2220,7 @@ nfsd4_encode_open_downgrade(struct nfsd4_compoundres *resp, __be32 nfserr, struc
2208 } 2220 }
2209 2221
2210 ENCODE_SEQID_OP_TAIL(od->od_stateowner); 2222 ENCODE_SEQID_OP_TAIL(od->od_stateowner);
2223 return nfserr;
2211} 2224}
2212 2225
2213static __be32 2226static __be32
@@ -2402,7 +2415,7 @@ err_no_verf:
2402 return nfserr; 2415 return nfserr;
2403} 2416}
2404 2417
2405static void 2418static __be32
2406nfsd4_encode_remove(struct nfsd4_compoundres *resp, __be32 nfserr, struct nfsd4_remove *remove) 2419nfsd4_encode_remove(struct nfsd4_compoundres *resp, __be32 nfserr, struct nfsd4_remove *remove)
2407{ 2420{
2408 ENCODE_HEAD; 2421 ENCODE_HEAD;
@@ -2412,9 +2425,10 @@ nfsd4_encode_remove(struct nfsd4_compoundres *resp, __be32 nfserr, struct nfsd4_
2412 WRITECINFO(remove->rm_cinfo); 2425 WRITECINFO(remove->rm_cinfo);
2413 ADJUST_ARGS(); 2426 ADJUST_ARGS();
2414 } 2427 }
2428 return nfserr;
2415} 2429}
2416 2430
2417static void 2431static __be32
2418nfsd4_encode_rename(struct nfsd4_compoundres *resp, __be32 nfserr, struct nfsd4_rename *rename) 2432nfsd4_encode_rename(struct nfsd4_compoundres *resp, __be32 nfserr, struct nfsd4_rename *rename)
2419{ 2433{
2420 ENCODE_HEAD; 2434 ENCODE_HEAD;
@@ -2425,9 +2439,10 @@ nfsd4_encode_rename(struct nfsd4_compoundres *resp, __be32 nfserr, struct nfsd4_
2425 WRITECINFO(rename->rn_tinfo); 2439 WRITECINFO(rename->rn_tinfo);
2426 ADJUST_ARGS(); 2440 ADJUST_ARGS();
2427 } 2441 }
2442 return nfserr;
2428} 2443}
2429 2444
2430static void 2445static __be32
2431nfsd4_encode_secinfo(struct nfsd4_compoundres *resp, __be32 nfserr, 2446nfsd4_encode_secinfo(struct nfsd4_compoundres *resp, __be32 nfserr,
2432 struct nfsd4_secinfo *secinfo) 2447 struct nfsd4_secinfo *secinfo)
2433{ 2448{
@@ -2491,13 +2506,14 @@ nfsd4_encode_secinfo(struct nfsd4_compoundres *resp, __be32 nfserr,
2491out: 2506out:
2492 if (exp) 2507 if (exp)
2493 exp_put(exp); 2508 exp_put(exp);
2509 return nfserr;
2494} 2510}
2495 2511
2496/* 2512/*
2497 * The SETATTR encode routine is special -- it always encodes a bitmap, 2513 * The SETATTR encode routine is special -- it always encodes a bitmap,
2498 * regardless of the error status. 2514 * regardless of the error status.
2499 */ 2515 */
2500static void 2516static __be32
2501nfsd4_encode_setattr(struct nfsd4_compoundres *resp, __be32 nfserr, struct nfsd4_setattr *setattr) 2517nfsd4_encode_setattr(struct nfsd4_compoundres *resp, __be32 nfserr, struct nfsd4_setattr *setattr)
2502{ 2518{
2503 ENCODE_HEAD; 2519 ENCODE_HEAD;
@@ -2514,9 +2530,10 @@ nfsd4_encode_setattr(struct nfsd4_compoundres *resp, __be32 nfserr, struct nfsd4
2514 WRITE32(setattr->sa_bmval[1]); 2530 WRITE32(setattr->sa_bmval[1]);
2515 } 2531 }
2516 ADJUST_ARGS(); 2532 ADJUST_ARGS();
2533 return nfserr;
2517} 2534}
2518 2535
2519static void 2536static __be32
2520nfsd4_encode_setclientid(struct nfsd4_compoundres *resp, __be32 nfserr, struct nfsd4_setclientid *scd) 2537nfsd4_encode_setclientid(struct nfsd4_compoundres *resp, __be32 nfserr, struct nfsd4_setclientid *scd)
2521{ 2538{
2522 ENCODE_HEAD; 2539 ENCODE_HEAD;
@@ -2533,9 +2550,10 @@ nfsd4_encode_setclientid(struct nfsd4_compoundres *resp, __be32 nfserr, struct n
2533 WRITE32(0); 2550 WRITE32(0);
2534 ADJUST_ARGS(); 2551 ADJUST_ARGS();
2535 } 2552 }
2553 return nfserr;
2536} 2554}
2537 2555
2538static void 2556static __be32
2539nfsd4_encode_write(struct nfsd4_compoundres *resp, __be32 nfserr, struct nfsd4_write *write) 2557nfsd4_encode_write(struct nfsd4_compoundres *resp, __be32 nfserr, struct nfsd4_write *write)
2540{ 2558{
2541 ENCODE_HEAD; 2559 ENCODE_HEAD;
@@ -2547,8 +2565,56 @@ nfsd4_encode_write(struct nfsd4_compoundres *resp, __be32 nfserr, struct nfsd4_w
2547 WRITEMEM(write->wr_verifier.data, 8); 2565 WRITEMEM(write->wr_verifier.data, 8);
2548 ADJUST_ARGS(); 2566 ADJUST_ARGS();
2549 } 2567 }
2568 return nfserr;
2550} 2569}
2551 2570
2571static __be32
2572nfsd4_encode_noop(struct nfsd4_compoundres *resp, __be32 nfserr, void *p)
2573{
2574 return nfserr;
2575}
2576
2577typedef __be32(* nfsd4_enc)(struct nfsd4_compoundres *, __be32, void *);
2578
2579static nfsd4_enc nfsd4_enc_ops[] = {
2580 [OP_ACCESS] (nfsd4_enc)nfsd4_encode_access,
2581 [OP_CLOSE] (nfsd4_enc)nfsd4_encode_close,
2582 [OP_COMMIT] (nfsd4_enc)nfsd4_encode_commit,
2583 [OP_CREATE] (nfsd4_enc)nfsd4_encode_create,
2584 [OP_DELEGPURGE] (nfsd4_enc)nfsd4_encode_noop,
2585 [OP_DELEGRETURN] (nfsd4_enc)nfsd4_encode_noop,
2586 [OP_GETATTR] (nfsd4_enc)nfsd4_encode_getattr,
2587 [OP_GETFH] (nfsd4_enc)nfsd4_encode_getfh,
2588 [OP_LINK] (nfsd4_enc)nfsd4_encode_link,
2589 [OP_LOCK] (nfsd4_enc)nfsd4_encode_lock,
2590 [OP_LOCKT] (nfsd4_enc)nfsd4_encode_lockt,
2591 [OP_LOCKU] (nfsd4_enc)nfsd4_encode_locku,
2592 [OP_LOOKUP] (nfsd4_enc)nfsd4_encode_noop,
2593 [OP_LOOKUPP] (nfsd4_enc)nfsd4_encode_noop,
2594 [OP_NVERIFY] (nfsd4_enc)nfsd4_encode_noop,
2595 [OP_OPEN] (nfsd4_enc)nfsd4_encode_open,
2596 [OP_OPEN_CONFIRM] (nfsd4_enc)nfsd4_encode_open_confirm,
2597 [OP_OPEN_DOWNGRADE] (nfsd4_enc)nfsd4_encode_open_downgrade,
2598 [OP_PUTFH] (nfsd4_enc)nfsd4_encode_noop,
2599 [OP_PUTPUBFH] (nfsd4_enc)nfsd4_encode_noop,
2600 [OP_PUTROOTFH] (nfsd4_enc)nfsd4_encode_noop,
2601 [OP_READ] (nfsd4_enc)nfsd4_encode_read,
2602 [OP_READDIR] (nfsd4_enc)nfsd4_encode_readdir,
2603 [OP_READLINK] (nfsd4_enc)nfsd4_encode_readlink,
2604 [OP_REMOVE] (nfsd4_enc)nfsd4_encode_remove,
2605 [OP_RENAME] (nfsd4_enc)nfsd4_encode_rename,
2606 [OP_RENEW] (nfsd4_enc)nfsd4_encode_noop,
2607 [OP_RESTOREFH] (nfsd4_enc)nfsd4_encode_noop,
2608 [OP_SAVEFH] (nfsd4_enc)nfsd4_encode_noop,
2609 [OP_SECINFO] (nfsd4_enc)nfsd4_encode_secinfo,
2610 [OP_SETATTR] (nfsd4_enc)nfsd4_encode_setattr,
2611 [OP_SETCLIENTID] (nfsd4_enc)nfsd4_encode_setclientid,
2612 [OP_SETCLIENTID_CONFIRM](nfsd4_enc)nfsd4_encode_noop,
2613 [OP_VERIFY] (nfsd4_enc)nfsd4_encode_noop,
2614 [OP_WRITE] (nfsd4_enc)nfsd4_encode_write,
2615 [OP_RELEASE_LOCKOWNER] (nfsd4_enc)nfsd4_encode_noop,
2616};
2617
2552void 2618void
2553nfsd4_encode_operation(struct nfsd4_compoundres *resp, struct nfsd4_op *op) 2619nfsd4_encode_operation(struct nfsd4_compoundres *resp, struct nfsd4_op *op)
2554{ 2620{
@@ -2560,101 +2626,12 @@ nfsd4_encode_operation(struct nfsd4_compoundres *resp, struct nfsd4_op *op)
2560 statp = p++; /* to be backfilled at the end */ 2626 statp = p++; /* to be backfilled at the end */
2561 ADJUST_ARGS(); 2627 ADJUST_ARGS();
2562 2628
2563 switch (op->opnum) { 2629 if (op->opnum == OP_ILLEGAL)
2564 case OP_ACCESS: 2630 goto status;
2565 nfsd4_encode_access(resp, op->status, &op->u.access); 2631 BUG_ON(op->opnum < 0 || op->opnum >= ARRAY_SIZE(nfsd4_enc_ops) ||
2566 break; 2632 !nfsd4_enc_ops[op->opnum]);
2567 case OP_CLOSE: 2633 op->status = nfsd4_enc_ops[op->opnum](resp, op->status, &op->u);
2568 nfsd4_encode_close(resp, op->status, &op->u.close); 2634status:
2569 break;
2570 case OP_COMMIT:
2571 nfsd4_encode_commit(resp, op->status, &op->u.commit);
2572 break;
2573 case OP_CREATE:
2574 nfsd4_encode_create(resp, op->status, &op->u.create);
2575 break;
2576 case OP_DELEGRETURN:
2577 break;
2578 case OP_GETATTR:
2579 op->status = nfsd4_encode_getattr(resp, op->status, &op->u.getattr);
2580 break;
2581 case OP_GETFH:
2582 nfsd4_encode_getfh(resp, op->status, op->u.getfh);
2583 break;
2584 case OP_LINK:
2585 nfsd4_encode_link(resp, op->status, &op->u.link);
2586 break;
2587 case OP_LOCK:
2588 nfsd4_encode_lock(resp, op->status, &op->u.lock);
2589 break;
2590 case OP_LOCKT:
2591 nfsd4_encode_lockt(resp, op->status, &op->u.lockt);
2592 break;
2593 case OP_LOCKU:
2594 nfsd4_encode_locku(resp, op->status, &op->u.locku);
2595 break;
2596 case OP_LOOKUP:
2597 break;
2598 case OP_LOOKUPP:
2599 break;
2600 case OP_NVERIFY:
2601 break;
2602 case OP_OPEN:
2603 nfsd4_encode_open(resp, op->status, &op->u.open);
2604 break;
2605 case OP_OPEN_CONFIRM:
2606 nfsd4_encode_open_confirm(resp, op->status, &op->u.open_confirm);
2607 break;
2608 case OP_OPEN_DOWNGRADE:
2609 nfsd4_encode_open_downgrade(resp, op->status, &op->u.open_downgrade);
2610 break;
2611 case OP_PUTFH:
2612 break;
2613 case OP_PUTROOTFH:
2614 break;
2615 case OP_READ:
2616 op->status = nfsd4_encode_read(resp, op->status, &op->u.read);
2617 break;
2618 case OP_READDIR:
2619 op->status = nfsd4_encode_readdir(resp, op->status, &op->u.readdir);
2620 break;
2621 case OP_READLINK:
2622 op->status = nfsd4_encode_readlink(resp, op->status, &op->u.readlink);
2623 break;
2624 case OP_REMOVE:
2625 nfsd4_encode_remove(resp, op->status, &op->u.remove);
2626 break;
2627 case OP_RENAME:
2628 nfsd4_encode_rename(resp, op->status, &op->u.rename);
2629 break;
2630 case OP_RENEW:
2631 break;
2632 case OP_RESTOREFH:
2633 break;
2634 case OP_SAVEFH:
2635 break;
2636 case OP_SECINFO:
2637 nfsd4_encode_secinfo(resp, op->status, &op->u.secinfo);
2638 break;
2639 case OP_SETATTR:
2640 nfsd4_encode_setattr(resp, op->status, &op->u.setattr);
2641 break;
2642 case OP_SETCLIENTID:
2643 nfsd4_encode_setclientid(resp, op->status, &op->u.setclientid);
2644 break;
2645 case OP_SETCLIENTID_CONFIRM:
2646 break;
2647 case OP_VERIFY:
2648 break;
2649 case OP_WRITE:
2650 nfsd4_encode_write(resp, op->status, &op->u.write);
2651 break;
2652 case OP_RELEASE_LOCKOWNER:
2653 break;
2654 default:
2655 break;
2656 }
2657
2658 /* 2635 /*
2659 * Note: We write the status directly, instead of using WRITE32(), 2636 * Note: We write the status directly, instead of using WRITE32(),
2660 * since it is already in network byte order. 2637 * since it is already in network byte order.