summaryrefslogtreecommitdiffstats
path: root/xlators/protocol/server/src/server-rpc-fops.c
diff options
context:
space:
mode:
Diffstat (limited to 'xlators/protocol/server/src/server-rpc-fops.c')
-rw-r--r--xlators/protocol/server/src/server-rpc-fops.c401
1 files changed, 113 insertions, 288 deletions
diff --git a/xlators/protocol/server/src/server-rpc-fops.c b/xlators/protocol/server/src/server-rpc-fops.c
index c621743fa06..4d8b7be5a34 100644
--- a/xlators/protocol/server/src/server-rpc-fops.c
+++ b/xlators/protocol/server/src/server-rpc-fops.c
@@ -15,13 +15,12 @@
#include "rpc-common-xdr.h"
#include "glusterfs3-xdr.h"
#include "glusterfs3.h"
-#include "compat-errno.h"
+#include <glusterfs/compat-errno.h>
#include "server-messages.h"
-#include "defaults.h"
-#include "default-args.h"
+#include <glusterfs/defaults.h>
+#include <glusterfs/default-args.h>
#include "server-common.h"
-#include "xlator.h"
-#include "compound-fop-utils.h"
+#include <glusterfs/xlator.h>
#include "xdr-nfs3.h"
@@ -2261,78 +2260,6 @@ out:
return 0;
}
-int
-server_compound_cbk(call_frame_t *frame, void *cookie, xlator_t *this,
- int32_t op_ret, int32_t op_errno, void *data, dict_t *xdata)
-{
- struct gfs3_compound_rsp rsp = {
- 0,
- };
- server_state_t *state = NULL;
- rpcsvc_request_t *req = NULL;
- compound_args_cbk_t *args_cbk = data;
- int i = 0;
-
- req = frame->local;
- state = CALL_STATE(frame);
-
- GF_PROTOCOL_DICT_SERIALIZE(this, xdata, (&rsp.xdata.xdata_val),
- rsp.xdata.xdata_len, op_errno, out);
-
- if (op_ret) {
- gf_msg(this->name, fop_log_level(GF_FOP_COMPOUND, op_errno), op_errno,
- PS_MSG_COMPOUND_INFO,
- "%" PRId64 ": COMPOUND%" PRId64
- " (%s), client: %s, "
- "error-xlator: %s",
- frame->root->unique, state->resolve.fd_no,
- uuid_utoa(state->resolve.gfid), STACK_CLIENT_NAME(frame->root),
- STACK_ERR_XL_NAME(frame->root));
- }
-
- /* TODO: I assume a single 10MB payload is large, if not, we need to
- agree to valid payload */
- if ((args_cbk->fop_length <= 0) ||
- ((args_cbk->fop_length > (10 * 1024 * 1024)))) {
- op_ret = -1;
- op_errno = EINVAL;
- goto out;
- }
-
- rsp.compound_rsp_array.compound_rsp_array_val = GF_CALLOC(
- args_cbk->fop_length, sizeof(compound_rsp),
- gf_server_mt_compound_rsp_t);
-
- if (!rsp.compound_rsp_array.compound_rsp_array_val) {
- op_ret = -1;
- op_errno = ENOMEM;
- goto out;
- }
- rsp.compound_rsp_array.compound_rsp_array_len = args_cbk->fop_length;
-
- for (i = 0; i < args_cbk->fop_length; i++) {
- op_ret = server_populate_compound_response(this, &rsp, frame, args_cbk,
- i);
-
- if (op_ret) {
- op_errno = op_ret;
- op_ret = -1;
- goto out;
- }
- }
-out:
- rsp.op_ret = op_ret;
- rsp.op_errno = gf_errno_to_error(op_errno);
-
- server_submit_reply(frame, req, &rsp, NULL, 0, NULL,
- (xdrproc_t)xdr_gfs3_compound_rsp);
-
- server_compound_rsp_cleanup(&rsp, args_cbk);
- GF_FREE(rsp.xdata.xdata_val);
-
- return 0;
-}
-
/* Resume function section */
int
@@ -3453,60 +3380,6 @@ err:
return 0;
}
-int
-server_compound_resume(call_frame_t *frame, xlator_t *bound_xl)
-{
- server_state_t *state = NULL;
- gfs3_compound_req *req = NULL;
- compound_args_t *args = NULL;
- int i = 0;
- int ret = -1;
- int length = 0;
- int op_errno = ENOMEM;
- compound_req *c_req = NULL;
-
- state = CALL_STATE(frame);
-
- if (state->resolve.op_ret != 0) {
- ret = state->resolve.op_ret;
- op_errno = state->resolve.op_errno;
- goto err;
- }
-
- req = &state->req;
-
- length = req->compound_req_array.compound_req_array_len;
- state->args = compound_fop_alloc(length, req->compound_fop_enum,
- state->xdata);
- args = state->args;
-
- if (!args)
- goto err;
-
- for (i = 0; i < length; i++) {
- c_req = &req->compound_req_array.compound_req_array_val[i];
- args->enum_list[i] = c_req->fop_enum;
-
- ret = server_populate_compound_request(req, frame, &args->req_list[i],
- i);
-
- if (ret) {
- op_errno = ret;
- ret = -1;
- goto err;
- }
- }
-
- STACK_WIND(frame, server_compound_cbk, bound_xl, bound_xl->fops->compound,
- args, state->xdata);
-
- return 0;
-err:
- server_compound_cbk(frame, NULL, frame->this, ret, op_errno, NULL, NULL);
-
- return ret;
-}
-
/* Fop section */
int
rpc_receive_common(rpcsvc_request_t *req, call_frame_t **fr,
@@ -4180,7 +4053,7 @@ server3_3_writev_vecsizer(int state, ssize_t *readsize, char *base_addr,
/* need to round off to proper roof (%4), as XDR packing pads
the end of opaque object with '0' */
- size = roof(write_req.xdata.xdata_len, 4);
+ size = gf_roof(write_req.xdata.xdata_len, 4);
*readsize = size;
@@ -4250,6 +4123,7 @@ server3_3_release(rpcsvc_request_t *req)
ret = 0;
out:
+ free(args.xdata.xdata_val);
return ret;
}
@@ -4297,6 +4171,7 @@ server3_3_releasedir(rpcsvc_request_t *req)
ret = 0;
out:
+ free(args.xdata.xdata_val);
return ret;
}
@@ -6087,166 +5962,116 @@ out:
int
server3_3_compound(rpcsvc_request_t *req)
{
- server_state_t *state = NULL;
- call_frame_t *frame = NULL;
- gfs3_compound_req args = {
- 0,
- };
- ssize_t len = 0;
- int length = 0;
- int i = 0;
int ret = -1;
- int op_errno = 0;
-
- if (!req)
- return ret;
-
- ret = rpc_receive_common(req, &frame, &state, &len, &args,
- xdr_gfs3_compound_req, GF_FOP_COMPOUND);
- if (ret != 0) {
- goto out;
- }
-
- state->req = args;
- state->iobref = iobref_ref(req->iobref);
-
- if (len < req->msg[0].iov_len) {
- state->payload_vector[0].iov_base = (req->msg[0].iov_base + len);
- state->payload_vector[0].iov_len = req->msg[0].iov_len - len;
- state->payload_count = 1;
- }
-
- for (i = 1; i < req->count; i++) {
- state->payload_vector[state->payload_count++] = req->msg[i];
- }
-
- state->size = iov_length(state->payload_vector, state->payload_count);
-
- ret = server_get_compound_resolve(state, &args);
-
- if (ret) {
- SERVER_REQ_SET_ERROR(req, ret);
- goto out;
- }
-
- GF_PROTOCOL_DICT_UNSERIALIZE(frame->root->client->bound_xl, state->xdata,
- args.xdata.xdata_val, args.xdata.xdata_len,
- ret, op_errno, out);
-
- ret = 0;
- resolve_and_resume(frame, server_compound_resume);
-out:
- free(args.xdata.xdata_val);
-
- length = args.compound_req_array.compound_req_array_len;
- server_compound_req_cleanup(&args, length);
- free(args.compound_req_array.compound_req_array_val);
-
- if (op_errno)
- SERVER_REQ_SET_ERROR(req, ret);
-
+ SERVER_REQ_SET_ERROR(req, ret);
return ret;
}
-rpcsvc_actor_t glusterfs3_3_fop_actors[GLUSTER_FOP_PROCCNT] = {
- [GFS3_OP_NULL] = {"NULL", GFS3_OP_NULL, server_null, NULL, 0, DRC_NA},
- [GFS3_OP_STAT] = {"STAT", GFS3_OP_STAT, server3_3_stat, NULL, 0, DRC_NA},
- [GFS3_OP_READLINK] = {"READLINK", GFS3_OP_READLINK, server3_3_readlink,
- NULL, 0, DRC_NA},
- [GFS3_OP_MKNOD] = {"MKNOD", GFS3_OP_MKNOD, server3_3_mknod, NULL, 0,
- DRC_NA},
- [GFS3_OP_MKDIR] = {"MKDIR", GFS3_OP_MKDIR, server3_3_mkdir, NULL, 0,
- DRC_NA},
- [GFS3_OP_UNLINK] = {"UNLINK", GFS3_OP_UNLINK, server3_3_unlink, NULL, 0,
- DRC_NA},
- [GFS3_OP_RMDIR] = {"RMDIR", GFS3_OP_RMDIR, server3_3_rmdir, NULL, 0,
- DRC_NA},
- [GFS3_OP_SYMLINK] = {"SYMLINK", GFS3_OP_SYMLINK, server3_3_symlink, NULL, 0,
- DRC_NA},
- [GFS3_OP_RENAME] = {"RENAME", GFS3_OP_RENAME, server3_3_rename, NULL, 0,
- DRC_NA},
- [GFS3_OP_LINK] = {"LINK", GFS3_OP_LINK, server3_3_link, NULL, 0, DRC_NA},
- [GFS3_OP_TRUNCATE] = {"TRUNCATE", GFS3_OP_TRUNCATE, server3_3_truncate,
- NULL, 0, DRC_NA},
- [GFS3_OP_OPEN] = {"OPEN", GFS3_OP_OPEN, server3_3_open, NULL, 0, DRC_NA},
- [GFS3_OP_READ] = {"READ", GFS3_OP_READ, server3_3_readv, NULL, 0, DRC_NA},
- [GFS3_OP_WRITE] = {"WRITE", GFS3_OP_WRITE, server3_3_writev,
- server3_3_writev_vecsizer, 0, DRC_NA},
- [GFS3_OP_STATFS] = {"STATFS", GFS3_OP_STATFS, server3_3_statfs, NULL, 0,
- DRC_NA},
- [GFS3_OP_FLUSH] = {"FLUSH", GFS3_OP_FLUSH, server3_3_flush, NULL, 0,
- DRC_NA},
- [GFS3_OP_FSYNC] = {"FSYNC", GFS3_OP_FSYNC, server3_3_fsync, NULL, 0,
- DRC_NA},
- [GFS3_OP_SETXATTR] = {"SETXATTR", GFS3_OP_SETXATTR, server3_3_setxattr,
- NULL, 0, DRC_NA},
- [GFS3_OP_GETXATTR] = {"GETXATTR", GFS3_OP_GETXATTR, server3_3_getxattr,
- NULL, 0, DRC_NA},
- [GFS3_OP_REMOVEXATTR] = {"REMOVEXATTR", GFS3_OP_REMOVEXATTR,
- server3_3_removexattr, NULL, 0, DRC_NA},
- [GFS3_OP_OPENDIR] = {"OPENDIR", GFS3_OP_OPENDIR, server3_3_opendir, NULL, 0,
- DRC_NA},
- [GFS3_OP_FSYNCDIR] = {"FSYNCDIR", GFS3_OP_FSYNCDIR, server3_3_fsyncdir,
- NULL, 0, DRC_NA},
- [GFS3_OP_ACCESS] = {"ACCESS", GFS3_OP_ACCESS, server3_3_access, NULL, 0,
- DRC_NA},
- [GFS3_OP_CREATE] = {"CREATE", GFS3_OP_CREATE, server3_3_create, NULL, 0,
- DRC_NA},
- [GFS3_OP_FTRUNCATE] = {"FTRUNCATE", GFS3_OP_FTRUNCATE, server3_3_ftruncate,
- NULL, 0, DRC_NA},
- [GFS3_OP_FSTAT] = {"FSTAT", GFS3_OP_FSTAT, server3_3_fstat, NULL, 0,
- DRC_NA},
- [GFS3_OP_LK] = {"LK", GFS3_OP_LK, server3_3_lk, NULL, 0, DRC_NA},
- [GFS3_OP_LOOKUP] = {"LOOKUP", GFS3_OP_LOOKUP, server3_3_lookup, NULL, 0,
- DRC_NA},
- [GFS3_OP_READDIR] = {"READDIR", GFS3_OP_READDIR, server3_3_readdir, NULL, 0,
- DRC_NA},
- [GFS3_OP_INODELK] = {"INODELK", GFS3_OP_INODELK, server3_3_inodelk, NULL, 0,
- DRC_NA},
- [GFS3_OP_FINODELK] = {"FINODELK", GFS3_OP_FINODELK, server3_3_finodelk,
- NULL, 0, DRC_NA},
- [GFS3_OP_ENTRYLK] = {"ENTRYLK", GFS3_OP_ENTRYLK, server3_3_entrylk, NULL, 0,
- DRC_NA},
- [GFS3_OP_FENTRYLK] = {"FENTRYLK", GFS3_OP_FENTRYLK, server3_3_fentrylk,
- NULL, 0, DRC_NA},
- [GFS3_OP_XATTROP] = {"XATTROP", GFS3_OP_XATTROP, server3_3_xattrop, NULL, 0,
- DRC_NA},
- [GFS3_OP_FXATTROP] = {"FXATTROP", GFS3_OP_FXATTROP, server3_3_fxattrop,
- NULL, 0, DRC_NA},
- [GFS3_OP_FGETXATTR] = {"FGETXATTR", GFS3_OP_FGETXATTR, server3_3_fgetxattr,
- NULL, 0, DRC_NA},
- [GFS3_OP_FSETXATTR] = {"FSETXATTR", GFS3_OP_FSETXATTR, server3_3_fsetxattr,
- NULL, 0, DRC_NA},
- [GFS3_OP_RCHECKSUM] = {"RCHECKSUM", GFS3_OP_RCHECKSUM, server3_3_rchecksum,
- NULL, 0, DRC_NA},
- [GFS3_OP_SETATTR] = {"SETATTR", GFS3_OP_SETATTR, server3_3_setattr, NULL, 0,
- DRC_NA},
- [GFS3_OP_FSETATTR] = {"FSETATTR", GFS3_OP_FSETATTR, server3_3_fsetattr,
- NULL, 0, DRC_NA},
- [GFS3_OP_READDIRP] = {"READDIRP", GFS3_OP_READDIRP, server3_3_readdirp,
- NULL, 0, DRC_NA},
- [GFS3_OP_RELEASE] = {"RELEASE", GFS3_OP_RELEASE, server3_3_release, NULL, 0,
- DRC_NA},
- [GFS3_OP_RELEASEDIR] = {"RELEASEDIR", GFS3_OP_RELEASEDIR,
- server3_3_releasedir, NULL, 0, DRC_NA},
- [GFS3_OP_FREMOVEXATTR] = {"FREMOVEXATTR", GFS3_OP_FREMOVEXATTR,
- server3_3_fremovexattr, NULL, 0, DRC_NA},
- [GFS3_OP_FALLOCATE] = {"FALLOCATE", GFS3_OP_FALLOCATE, server3_3_fallocate,
- NULL, 0, DRC_NA},
- [GFS3_OP_DISCARD] = {"DISCARD", GFS3_OP_DISCARD, server3_3_discard, NULL, 0,
- DRC_NA},
- [GFS3_OP_ZEROFILL] = {"ZEROFILL", GFS3_OP_ZEROFILL, server3_3_zerofill,
- NULL, 0, DRC_NA},
- [GFS3_OP_IPC] = {"IPC", GFS3_OP_IPC, server3_3_ipc, NULL, 0, DRC_NA},
- [GFS3_OP_SEEK] = {"SEEK", GFS3_OP_SEEK, server3_3_seek, NULL, 0, DRC_NA},
- [GFS3_OP_LEASE] = {"LEASE", GFS3_OP_LEASE, server3_3_lease, NULL, 0,
- DRC_NA},
- [GFS3_OP_GETACTIVELK] = {"GETACTIVELK", GFS3_OP_GETACTIVELK,
- server3_3_getactivelk, NULL, 0, DRC_NA},
- [GFS3_OP_SETACTIVELK] = {"SETACTIVELK", GFS3_OP_SETACTIVELK,
- server3_3_setactivelk, NULL, 0, DRC_NA},
- [GFS3_OP_COMPOUND] = {"COMPOUND", GFS3_OP_COMPOUND, server3_3_compound,
- NULL, 0, DRC_NA},
+static rpcsvc_actor_t glusterfs3_3_fop_actors[GLUSTER_FOP_PROCCNT] = {
+ [GFS3_OP_NULL] = {"NULL", server_null, NULL, GFS3_OP_NULL, DRC_NA, 0},
+ [GFS3_OP_STAT] = {"STAT", server3_3_stat, NULL, GFS3_OP_STAT, DRC_NA, 0},
+ [GFS3_OP_READLINK] = {"READLINK", server3_3_readlink, NULL,
+ GFS3_OP_READLINK, DRC_NA, 0},
+ [GFS3_OP_MKNOD] = {"MKNOD", server3_3_mknod, NULL, GFS3_OP_MKNOD, DRC_NA,
+ 0},
+ [GFS3_OP_MKDIR] = {"MKDIR", server3_3_mkdir, NULL, GFS3_OP_MKDIR, DRC_NA,
+ 0},
+ [GFS3_OP_UNLINK] = {"UNLINK", server3_3_unlink, NULL, GFS3_OP_UNLINK,
+ DRC_NA, 0},
+ [GFS3_OP_RMDIR] = {"RMDIR", server3_3_rmdir, NULL, GFS3_OP_RMDIR, DRC_NA,
+ 0},
+ [GFS3_OP_SYMLINK] = {"SYMLINK", server3_3_symlink, NULL, GFS3_OP_SYMLINK,
+ DRC_NA, 0},
+ [GFS3_OP_RENAME] = {"RENAME", server3_3_rename, NULL, GFS3_OP_RENAME,
+ DRC_NA, 0},
+ [GFS3_OP_LINK] = {"LINK", server3_3_link, NULL, GFS3_OP_LINK, DRC_NA, 0},
+ [GFS3_OP_TRUNCATE] = {"TRUNCATE", server3_3_truncate, NULL,
+ GFS3_OP_TRUNCATE, DRC_NA, 0},
+ [GFS3_OP_OPEN] = {"OPEN", server3_3_open, NULL, GFS3_OP_OPEN, DRC_NA, 0},
+ [GFS3_OP_READ] = {"READ", server3_3_readv, NULL, GFS3_OP_READ, DRC_NA, 0},
+ [GFS3_OP_WRITE] = {"WRITE", server3_3_writev, server3_3_writev_vecsizer,
+ GFS3_OP_WRITE, DRC_NA, 0},
+ [GFS3_OP_STATFS] = {"STATFS", server3_3_statfs, NULL, GFS3_OP_STATFS,
+ DRC_NA, 0},
+ [GFS3_OP_FLUSH] = {"FLUSH", server3_3_flush, NULL, GFS3_OP_FLUSH, DRC_NA,
+ 0},
+ [GFS3_OP_FSYNC] = {"FSYNC", server3_3_fsync, NULL, GFS3_OP_FSYNC, DRC_NA,
+ 0},
+ [GFS3_OP_SETXATTR] = {"SETXATTR", server3_3_setxattr, NULL,
+ GFS3_OP_SETXATTR, DRC_NA, 0},
+ [GFS3_OP_GETXATTR] = {"GETXATTR", server3_3_getxattr, NULL,
+ GFS3_OP_GETXATTR, DRC_NA, 0},
+ [GFS3_OP_REMOVEXATTR] = {"REMOVEXATTR", server3_3_removexattr, NULL,
+ GFS3_OP_REMOVEXATTR, DRC_NA, 0},
+ [GFS3_OP_OPENDIR] = {"OPENDIR", server3_3_opendir, NULL, GFS3_OP_OPENDIR,
+ DRC_NA, 0},
+ [GFS3_OP_FSYNCDIR] = {"FSYNCDIR", server3_3_fsyncdir, NULL,
+ GFS3_OP_FSYNCDIR, DRC_NA, 0},
+ [GFS3_OP_ACCESS] = {"ACCESS", server3_3_access, NULL, DRC_NA, 0},
+ [GFS3_OP_CREATE] = {"CREATE", server3_3_create, NULL, GFS3_OP_ACCESS,
+ DRC_NA, 0},
+ [GFS3_OP_FTRUNCATE] = {"FTRUNCATE", server3_3_ftruncate, NULL,
+ GFS3_OP_FTRUNCATE, DRC_NA, 0},
+ [GFS3_OP_FSTAT] = {"FSTAT", server3_3_fstat, NULL, GFS3_OP_FSTAT, DRC_NA,
+ 0},
+ [GFS3_OP_LK] = {"LK", server3_3_lk, NULL, GFS3_OP_LK, DRC_NA, 0},
+ [GFS3_OP_LOOKUP] = {"LOOKUP", server3_3_lookup, NULL, GFS3_OP_LOOKUP,
+ DRC_NA, 0},
+ [GFS3_OP_READDIR] = {"READDIR", server3_3_readdir, NULL, GFS3_OP_READDIR,
+ DRC_NA, 0},
+ [GFS3_OP_INODELK] = {"INODELK", server3_3_inodelk, NULL, GFS3_OP_INODELK,
+ DRC_NA, 0},
+ [GFS3_OP_FINODELK] = {"FINODELK", server3_3_finodelk, NULL,
+ GFS3_OP_FINODELK, DRC_NA, 0},
+ [GFS3_OP_ENTRYLK] = {"ENTRYLK", server3_3_entrylk, NULL, GFS3_OP_ENTRYLK,
+ DRC_NA, 0},
+ [GFS3_OP_FENTRYLK] = {"FENTRYLK", server3_3_fentrylk, NULL,
+ GFS3_OP_FENTRYLK, DRC_NA, 0},
+ [GFS3_OP_XATTROP] = {"XATTROP", server3_3_xattrop, NULL, GFS3_OP_XATTROP,
+ DRC_NA, 0},
+ [GFS3_OP_FXATTROP] = {"FXATTROP", server3_3_fxattrop, NULL,
+ GFS3_OP_FXATTROP, DRC_NA, 0},
+ [GFS3_OP_FGETXATTR] = {"FGETXATTR", server3_3_fgetxattr, NULL,
+ GFS3_OP_FGETXATTR, DRC_NA, 0},
+ [GFS3_OP_FSETXATTR] = {"FSETXATTR", server3_3_fsetxattr, NULL,
+ GFS3_OP_FSETXATTR, DRC_NA, 0},
+ [GFS3_OP_RCHECKSUM] = {"RCHECKSUM", server3_3_rchecksum, NULL,
+ GFS3_OP_RCHECKSUM, DRC_NA, 0},
+ [GFS3_OP_SETATTR] = {"SETATTR", server3_3_setattr, NULL, GFS3_OP_SETATTR,
+ DRC_NA, 0},
+ [GFS3_OP_FSETATTR] = {"FSETATTR", server3_3_fsetattr, NULL,
+ GFS3_OP_FSETATTR, DRC_NA, 0},
+ [GFS3_OP_READDIRP] = {"READDIRP", server3_3_readdirp, NULL,
+ GFS3_OP_READDIRP, DRC_NA, 0},
+ [GFS3_OP_RELEASE] = {"RELEASE", server3_3_release, NULL, GFS3_OP_RELEASE,
+ DRC_NA, 0},
+ [GFS3_OP_RELEASEDIR] =
+ {
+ "RELEASEDIR",
+ server3_3_releasedir,
+ NULL,
+ GFS3_OP_RELEASEDIR,
+ DRC_NA,
+ 0,
+ },
+ [GFS3_OP_FREMOVEXATTR] = {"FREMOVEXATTR", server3_3_fremovexattr, NULL,
+ GFS3_OP_FREMOVEXATTR, DRC_NA, 0},
+ [GFS3_OP_FALLOCATE] = {"FALLOCATE", server3_3_fallocate, NULL,
+ GFS3_OP_FALLOCATE, DRC_NA, 0},
+ [GFS3_OP_DISCARD] = {"DISCARD", server3_3_discard, NULL, GFS3_OP_DISCARD,
+ DRC_NA, 0},
+ [GFS3_OP_ZEROFILL] = {"ZEROFILL", server3_3_zerofill, NULL,
+ GFS3_OP_ZEROFILL, DRC_NA, 0},
+ [GFS3_OP_IPC] = {"IPC", server3_3_ipc, NULL, GFS3_OP_IPC, DRC_NA, 0},
+ [GFS3_OP_SEEK] = {"SEEK", server3_3_seek, NULL, GFS3_OP_SEEK, DRC_NA, 0},
+ [GFS3_OP_LEASE] = {"LEASE", server3_3_lease, NULL, GFS3_OP_LEASE, DRC_NA,
+ 0},
+ [GFS3_OP_GETACTIVELK] = {"GETACTIVELK", server3_3_getactivelk, NULL,
+ GFS3_OP_GETACTIVELK, DRC_NA, 0},
+ [GFS3_OP_SETACTIVELK] = {"SETACTIVELK", server3_3_setactivelk, NULL,
+ GFS3_OP_SETACTIVELK, DRC_NA, 0},
+ [GFS3_OP_COMPOUND] = {"COMPOUND", server3_3_compound, NULL,
+ GFS3_OP_COMPOUND, DRC_NA, 0},
};
struct rpcsvc_program glusterfs3_3_fop_prog = {