({ \
int32_t __err = -ENOTCONN; \
if (proxy_link_is_connected(&(_cmount)->link)) { \
- (_req).cmount = (_cmount)->cmount; \
+ (_req).v0.cmount = (_cmount)->cmount; \
__err = CEPH_RUN(_cmount, _op, _req, _ans); \
} \
__err; \
{
CEPH_REQ(ceph_chdir, req, 1, ans, 0);
- CEPH_STR_ADD(req, path, path);
+ CEPH_STR_ADD(req, v0.path, path);
return CEPH_PROCESS(cmount, LIBCEPHFSD_OP_CHDIR, req, ans);
}
{
CEPH_REQ(ceph_conf_get, req, 1, ans, 1);
- req.size = len;
+ req.v0.size = len;
- CEPH_STR_ADD(req, option, option);
+ CEPH_STR_ADD(req, v0.option, option);
CEPH_BUFF_ADD(ans, buf, len);
return CEPH_PROCESS(cmount, LIBCEPHFSD_OP_CONF_GET, req, ans);
{
CEPH_REQ(ceph_conf_read_file, req, 1, ans, 0);
- CEPH_STR_ADD(req, path, path_list);
+ CEPH_STR_ADD(req, v0.path, path_list);
return CEPH_PROCESS(cmount, LIBCEPHFSD_OP_CONF_READ_FILE, req, ans);
}
{
CEPH_REQ(ceph_conf_set, req, 2, ans, 0);
- CEPH_STR_ADD(req, option, option);
- CEPH_STR_ADD(req, value, value);
+ CEPH_STR_ADD(req, v0.option, option);
+ CEPH_STR_ADD(req, v0.value, value);
return CEPH_PROCESS(cmount, LIBCEPHFSD_OP_CONF_SET, req, ans);
}
}
}
- CEPH_STR_ADD(req, id, id);
+ CEPH_STR_ADD(req, v0.id, id);
err = CEPH_CALL(sd, LIBCEPHFSD_OP_CREATE, req, ans);
if ((err < 0) || ((err = ans.header.result) < 0)) {
goto failed_link;
}
- ceph_mount->cmount = ans.cmount;
+ ceph_mount->cmount = ans.v0.cmount;
*cmount = ceph_mount;
{
CEPH_REQ(ceph_ll_close, req, 0, ans, 0);
- req.fh = ptr_value(filehandle);
+ req.v0.fh = ptr_value(filehandle);
return CEPH_PROCESS(cmount, LIBCEPHFSD_OP_LL_CLOSE, req, ans);
}
CEPH_REQ(ceph_ll_create, req, 1, ans, 1);
int32_t err;
- req.userperm = ptr_value(perms);
- req.parent = ptr_value(parent);
- req.mode = mode;
- req.oflags = oflags;
- req.want = want;
- req.flags = lflags;
+ req.v0.userperm = ptr_value(perms);
+ req.v0.parent = ptr_value(parent);
+ req.v0.mode = mode;
+ req.v0.oflags = oflags;
+ req.v0.want = want;
+ req.v0.flags = lflags;
- CEPH_STR_ADD(req, name, name);
+ CEPH_STR_ADD(req, v0.name, name);
CEPH_BUFF_ADD(ans, stx, sizeof(*stx));
err = CEPH_PROCESS(cmount, LIBCEPHFSD_OP_LL_CREATE, req, ans);
if (err >= 0) {
- *outp = value_ptr(ans.inode);
- *fhp = value_ptr(ans.fh);
+ *outp = value_ptr(ans.v0.inode);
+ *fhp = value_ptr(ans.v0.fh);
}
return err;
{
CEPH_REQ(ceph_ll_fallocate, req, 0, ans, 0);
- req.fh = ptr_value(fh);
- req.mode = mode;
- req.offset = offset;
- req.length = length;
+ req.v0.fh = ptr_value(fh);
+ req.v0.mode = mode;
+ req.v0.offset = offset;
+ req.v0.length = length;
return CEPH_PROCESS(cmount, LIBCEPHFSD_OP_LL_FALLOCATE, req, ans);
}
{
CEPH_REQ(ceph_ll_fsync, req, 0, ans, 0);
- req.fh = ptr_value(fh);
- req.dataonly = syncdataonly;
+ req.v0.fh = ptr_value(fh);
+ req.v0.dataonly = syncdataonly;
return CEPH_PROCESS(cmount, LIBCEPHFSD_OP_LL_FSYNC, req, ans);
}
{
CEPH_REQ(ceph_ll_getattr, req, 0, ans, 1);
- req.userperm = ptr_value(perms);
- req.inode = ptr_value(in);
- req.want = want;
- req.flags = flags;
+ req.v0.userperm = ptr_value(perms);
+ req.v0.inode = ptr_value(in);
+ req.v0.want = want;
+ req.v0.flags = flags;
CEPH_BUFF_ADD(ans, stx, sizeof(*stx));
{
CEPH_REQ(ceph_ll_getxattr, req, 1, ans, 1);
- req.userperm = ptr_value(perms);
- req.inode = ptr_value(in);
- req.size = size;
- CEPH_STR_ADD(req, name, name);
+ req.v0.userperm = ptr_value(perms);
+ req.v0.inode = ptr_value(in);
+ req.v0.size = size;
+ CEPH_STR_ADD(req, v0.name, name);
CEPH_BUFF_ADD(ans, value, size);
{
CEPH_REQ(ceph_ll_link, req, 1, ans, 0);
- req.userperm = ptr_value(perms);
- req.inode = ptr_value(in);
- req.parent = ptr_value(newparent);
- CEPH_STR_ADD(req, name, name);
+ req.v0.userperm = ptr_value(perms);
+ req.v0.inode = ptr_value(in);
+ req.v0.parent = ptr_value(newparent);
+ CEPH_STR_ADD(req, v0.name, name);
return CEPH_PROCESS(cmount, LIBCEPHFSD_OP_LL_LINK, req, ans);
}
CEPH_REQ(ceph_ll_listxattr, req, 0, ans, 1);
int32_t err;
- req.userperm = ptr_value(perms);
- req.inode = ptr_value(in);
- req.size = buf_size;
+ req.v0.userperm = ptr_value(perms);
+ req.v0.inode = ptr_value(in);
+ req.v0.size = buf_size;
CEPH_BUFF_ADD(ans, list, buf_size);
err = CEPH_PROCESS(cmount, LIBCEPHFSD_OP_LL_LISTXATTR, req, ans);
if (err >= 0) {
- *list_size = ans.size;
+ *list_size = ans.v0.size;
}
return err;
CEPH_REQ(ceph_ll_lookup, req, 1, ans, 1);
int32_t err;
- req.userperm = ptr_value(perms);
- req.parent = ptr_value(parent);
- req.want = want;
- req.flags = flags;
- CEPH_STR_ADD(req, name, name);
+ req.v0.userperm = ptr_value(perms);
+ req.v0.parent = ptr_value(parent);
+ req.v0.want = want;
+ req.v0.flags = flags;
+ CEPH_STR_ADD(req, v0.name, name);
CEPH_BUFF_ADD(ans, stx, sizeof(*stx));
err = CEPH_PROCESS(cmount, LIBCEPHFSD_OP_LL_LOOKUP, req, ans);
if (err >= 0) {
- *out = value_ptr(ans.inode);
+ *out = value_ptr(ans.v0.inode);
}
return err;
CEPH_REQ(ceph_ll_lookup_inode, req, 0, ans, 0);
int32_t err;
- req.ino = ino;
+ req.v0.ino = ino;
err = CEPH_PROCESS(cmount, LIBCEPHFSD_OP_LL_LOOKUP_INODE, req, ans);
if (err >= 0) {
- *inode = value_ptr(ans.inode);
+ *inode = value_ptr(ans.v0.inode);
}
return err;
err = CEPH_PROCESS(cmount, LIBCEPHFSD_OP_LL_LOOKUP_ROOT, req, ans);
if (err >= 0) {
- *parent = value_ptr(ans.inode);
+ *parent = value_ptr(ans.v0.inode);
}
return err;
CEPH_REQ(ceph_ll_lseek, req, 0, ans, 0);
int32_t err;
- req.fh = ptr_value(filehandle);
- req.offset = offset;
- req.whence = whence;
+ req.v0.fh = ptr_value(filehandle);
+ req.v0.offset = offset;
+ req.v0.whence = whence;
err = CEPH_PROCESS(cmount, LIBCEPHFSD_OP_LL_LSEEK, req, ans);
if (err >= 0) {
- return ans.offset;
+ return ans.v0.offset;
}
return err;
CEPH_REQ(ceph_ll_mkdir, req, 1, ans, 1);
int32_t err;
- req.userperm = ptr_value(perms);
- req.parent = ptr_value(parent);
- req.mode = mode;
- req.want = want;
- req.flags = flags;
- CEPH_STR_ADD(req, name, name);
+ req.v0.userperm = ptr_value(perms);
+ req.v0.parent = ptr_value(parent);
+ req.v0.mode = mode;
+ req.v0.want = want;
+ req.v0.flags = flags;
+ CEPH_STR_ADD(req, v0.name, name);
CEPH_BUFF_ADD(ans, stx, sizeof(*stx));
err = CEPH_PROCESS(cmount, LIBCEPHFSD_OP_LL_MKDIR, req, ans);
if (err >= 0) {
- *out = value_ptr(ans.inode);
+ *out = value_ptr(ans.v0.inode);
}
return err;
CEPH_REQ(ceph_ll_mknod, req, 1, ans, 1);
int32_t err;
- req.userperm = ptr_value(perms);
- req.parent = ptr_value(parent);
- req.mode = mode;
- req.rdev = rdev;
- req.want = want;
- req.flags = flags;
- CEPH_STR_ADD(req, name, name);
+ req.v0.userperm = ptr_value(perms);
+ req.v0.parent = ptr_value(parent);
+ req.v0.mode = mode;
+ req.v0.rdev = rdev;
+ req.v0.want = want;
+ req.v0.flags = flags;
+ CEPH_STR_ADD(req, v0.name, name);
CEPH_BUFF_ADD(ans, stx, sizeof(*stx));
err = CEPH_PROCESS(cmount, LIBCEPHFSD_OP_LL_MKNOD, req, ans);
if (err >= 0) {
- *out = value_ptr(ans.inode);
+ *out = value_ptr(ans.v0.inode);
}
return err;
CEPH_REQ(ceph_ll_open, req, 0, ans, 0);
int32_t err;
- req.userperm = ptr_value(perms);
- req.inode = ptr_value(in);
- req.flags = flags;
+ req.v0.userperm = ptr_value(perms);
+ req.v0.inode = ptr_value(in);
+ req.v0.flags = flags;
err = CEPH_PROCESS(cmount, LIBCEPHFSD_OP_LL_OPEN, req, ans);
if (err >= 0) {
- *fh = value_ptr(ans.fh);
+ *fh = value_ptr(ans.v0.fh);
}
return err;
CEPH_REQ(ceph_ll_opendir, req, 0, ans, 0);
int32_t err;
- req.userperm = ptr_value(perms);
- req.inode = ptr_value(in);
+ req.v0.userperm = ptr_value(perms);
+ req.v0.inode = ptr_value(in);
err = CEPH_PROCESS(cmount, LIBCEPHFSD_OP_LL_OPENDIR, req, ans);
if (err >= 0) {
- *dirpp = value_ptr(ans.dir);
+ *dirpp = value_ptr(ans.v0.dir);
}
return err;
{
CEPH_REQ(ceph_ll_put, req, 0, ans, 0);
- req.inode = ptr_value(in);
+ req.v0.inode = ptr_value(in);
return CEPH_PROCESS(cmount, LIBCEPHFSD_OP_LL_PUT, req, ans);
}
{
CEPH_REQ(ceph_ll_read, req, 0, ans, 1);
- req.fh = ptr_value(filehandle);
- req.offset = off;
- req.len = len;
+ req.v0.fh = ptr_value(filehandle);
+ req.v0.offset = off;
+ req.v0.len = len;
CEPH_BUFF_ADD(ans, buf, len);
{
CEPH_REQ(ceph_ll_readlink, req, 0, ans, 1);
- req.userperm = ptr_value(perms);
- req.inode = ptr_value(in);
- req.size = bufsize;
+ req.v0.userperm = ptr_value(perms);
+ req.v0.inode = ptr_value(in);
+ req.v0.size = bufsize;
CEPH_BUFF_ADD(ans, buf, bufsize);
{
CEPH_REQ(ceph_ll_releasedir, req, 0, ans, 0);
- req.dir = ptr_value(dir);
+ req.v0.dir = ptr_value(dir);
return CEPH_PROCESS(cmount, LIBCEPHFSD_OP_LL_RELEASEDIR, req, ans);
}
{
CEPH_REQ(ceph_ll_removexattr, req, 1, ans, 0);
- req.userperm = ptr_value(perms);
- req.inode = ptr_value(in);
- CEPH_STR_ADD(req, name, name);
+ req.v0.userperm = ptr_value(perms);
+ req.v0.inode = ptr_value(in);
+ CEPH_STR_ADD(req, v0.name, name);
return CEPH_PROCESS(cmount, LIBCEPHFSD_OP_LL_REMOVEXATTR, req, ans);
}
{
CEPH_REQ(ceph_ll_rename, req, 2, ans, 0);
- req.userperm = ptr_value(perms);
- req.old_parent = ptr_value(parent);
- req.new_parent = ptr_value(newparent);
- CEPH_STR_ADD(req, old_name, name);
- CEPH_STR_ADD(req, new_name, newname);
+ req.v0.userperm = ptr_value(perms);
+ req.v0.old_parent = ptr_value(parent);
+ req.v0.new_parent = ptr_value(newparent);
+ CEPH_STR_ADD(req, v0.old_name, name);
+ CEPH_STR_ADD(req, v0.new_name, newname);
return CEPH_PROCESS(cmount, LIBCEPHFSD_OP_LL_RENAME, req, ans);
}
{
CEPH_REQ(ceph_rewinddir, req, 0, ans, 0);
- req.dir = ptr_value(dirp);
+ req.v0.dir = ptr_value(dirp);
CEPH_PROCESS(cmount, LIBCEPHFSD_OP_REWINDDIR, req, ans);
}
{
CEPH_REQ(ceph_ll_rmdir, req, 1, ans, 0);
- req.userperm = ptr_value(perms);
- req.parent = ptr_value(in);
- CEPH_STR_ADD(req, name, name);
+ req.v0.userperm = ptr_value(perms);
+ req.v0.parent = ptr_value(in);
+ CEPH_STR_ADD(req, v0.name, name);
return CEPH_PROCESS(cmount, LIBCEPHFSD_OP_LL_RMDIR, req, ans);
}
{
CEPH_REQ(ceph_ll_setattr, req, 1, ans, 0);
- req.userperm = ptr_value(perms);
- req.inode = ptr_value(in);
- req.mask = mask;
+ req.v0.userperm = ptr_value(perms);
+ req.v0.inode = ptr_value(in);
+ req.v0.mask = mask;
CEPH_BUFF_ADD(req, stx, sizeof(*stx));
return CEPH_PROCESS(cmount, LIBCEPHFSD_OP_LL_SETATTR, req, ans);
{
CEPH_REQ(ceph_ll_setxattr, req, 2, ans, 0);
- req.userperm = ptr_value(perms);
- req.inode = ptr_value(in);
- req.size = size;
- req.flags = flags;
- CEPH_STR_ADD(req, name, name);
+ req.v0.userperm = ptr_value(perms);
+ req.v0.inode = ptr_value(in);
+ req.v0.size = size;
+ req.v0.flags = flags;
+ CEPH_STR_ADD(req, v0.name, name);
CEPH_BUFF_ADD(req, value, size);
return CEPH_PROCESS(cmount, LIBCEPHFSD_OP_LL_SETXATTR, req, ans);
{
CEPH_REQ(ceph_ll_statfs, req, 0, ans, 1);
- req.inode = ptr_value(in);
+ req.v0.inode = ptr_value(in);
CEPH_BUFF_ADD(ans, stbuf, sizeof(*stbuf));
CEPH_REQ(ceph_ll_symlink, req, 2, ans, 1);
int32_t err;
- req.userperm = ptr_value(perms);
- req.parent = ptr_value(in);
- req.want = want;
- req.flags = flags;
- CEPH_STR_ADD(req, name, name);
- CEPH_STR_ADD(req, target, value);
+ req.v0.userperm = ptr_value(perms);
+ req.v0.parent = ptr_value(in);
+ req.v0.want = want;
+ req.v0.flags = flags;
+ CEPH_STR_ADD(req, v0.name, name);
+ CEPH_STR_ADD(req, v0.target, value);
CEPH_BUFF_ADD(req, stx, sizeof(*stx));
err = CEPH_PROCESS(cmount, LIBCEPHFSD_OP_LL_SYMLINK, req, ans);
if (err >= 0) {
- *out = value_ptr(ans.inode);
+ *out = value_ptr(ans.v0.inode);
}
return err;
{
CEPH_REQ(ceph_ll_unlink, req, 1, ans, 0);
- req.userperm = ptr_value(perms);
- req.parent = ptr_value(in);
- CEPH_STR_ADD(req, name, name);
+ req.v0.userperm = ptr_value(perms);
+ req.v0.parent = ptr_value(in);
+ CEPH_STR_ADD(req, v0.name, name);
return CEPH_PROCESS(cmount, LIBCEPHFSD_OP_LL_UNLINK, req, ans);
}
CEPH_REQ(ceph_ll_walk, req, 1, ans, 1);
int32_t err;
- req.userperm = ptr_value(perms);
- req.want = want;
- req.flags = flags;
- CEPH_STR_ADD(req, path, name);
+ req.v0.userperm = ptr_value(perms);
+ req.v0.want = want;
+ req.v0.flags = flags;
+ CEPH_STR_ADD(req, v0.path, name);
CEPH_BUFF_ADD(ans, stx, sizeof(*stx));
err = CEPH_PROCESS(cmount, LIBCEPHFSD_OP_LL_WALK, req, ans);
if (err >= 0) {
- *i = value_ptr(ans.inode);
+ *i = value_ptr(ans.v0.inode);
}
return err;
{
CEPH_REQ(ceph_ll_write, req, 1, ans, 0);
- req.fh = ptr_value(filehandle);
- req.offset = off;
- req.len = len;
+ req.v0.fh = ptr_value(filehandle);
+ req.v0.offset = off;
+ req.v0.len = len;
CEPH_BUFF_ADD(req, data, len);
return CEPH_PROCESS(cmount, LIBCEPHFSD_OP_LL_WRITE, req, ans);
{
CEPH_REQ(ceph_mount, req, 1, ans, 0);
- CEPH_STR_ADD(req, root, root);
+ CEPH_STR_ADD(req, v0.root, root);
return CEPH_PROCESS(cmount, LIBCEPHFSD_OP_MOUNT, req, ans);
}
CEPH_REQ(ceph_readdir, req, 0, ans, 1);
- req.dir = ptr_value(dirp);
+ req.v0.dir = ptr_value(dirp);
CEPH_BUFF_ADD(ans, de, sizeof(struct dirent));
if (err < 0) {
return err;
}
- if (ans.eod) {
+ if (ans.v0.eod) {
return 0;
}
{
CEPH_REQ(ceph_select_filesystem, req, 1, ans, 0);
- CEPH_STR_ADD(req, fs, fs_name);
+ CEPH_STR_ADD(req, v0.fs, fs_name);
return CEPH_PROCESS(cmount, LIBCEPHFSD_OP_SELECT_FILESYSTEM, req, ans);
}
{
CEPH_REQ(ceph_userperm_destroy, req, 0, ans, 0);
- req.userperm = ptr_value(perms);
+ req.v0.userperm = ptr_value(perms);
CEPH_RUN(&global_cmount, LIBCEPHFSD_OP_USERPERM_DESTROY, req, ans);
}
CEPH_REQ(ceph_userperm_new, req, 1, ans, 0);
int32_t err;
- req.uid = uid;
- req.gid = gid;
- req.groups = ngids;
+ req.v0.uid = uid;
+ req.v0.gid = gid;
+ req.v0.groups = ngids;
CEPH_BUFF_ADD(req, gidlist, sizeof(gid_t) * ngids);
err = proxy_global_connect();
ans);
}
if (err >= 0) {
- return value_ptr(ans.userperm);
+ return value_ptr(ans.v0.userperm);
}
errno = -err;
return "Unknown";
}
- cached_major = ans.major;
- cached_minor = ans.minor;
- cached_patch = ans.patch;
+ cached_major = ans.v0.major;
+ cached_minor = ans.v0.minor;
+ cached_patch = ans.v0.patch;
}
*major = cached_major;
return NULL;
}
- return value_ptr(ans.userperm);
+ return value_ptr(ans.v0.userperm);
}
__public int64_t ceph_ll_nonblocking_readv_writev(
return -EOPNOTSUPP;
}
- req.info = ptr_checksum(&cmount->async.random, io_info);
- req.fh = (uintptr_t)io_info->fh;
- req.off = io_info->off;
- req.size = 0;
- req.write = io_info->write;
- req.fsync = io_info->fsync;
- req.syncdataonly = io_info->syncdataonly;
+ req.v0.info = ptr_checksum(&cmount->async.random, io_info);
+ req.v0.fh = (uintptr_t)io_info->fh;
+ req.v0.off = io_info->off;
+ req.v0.size = 0;
+ req.v0.write = io_info->write;
+ req.v0.fsync = io_info->fsync;
+ req.v0.syncdataonly = io_info->syncdataonly;
for (i = 0; i < io_info->iovcnt; i++) {
if (io_info->write) {
CEPH_BUFF_ADD(req, io_info->iov[i].iov_base,
io_info->iov[i].iov_len);
}
- req.size += io_info->iov[i].iov_len;
+ req.v0.size += io_info->iov[i].iov_len;
}
err = CEPH_PROCESS(cmount, LIBCEPHFSD_OP_LL_NONBLOCKING_RW, req, ans);
return err;
}
- return ans.res;
+ return ans.v0.res;
}
text = ceph_version(&major, &minor, &patch);
TRACE("ceph_version(%d, %d, %d) -> %s", major, minor, patch, text);
- ans.major = major;
- ans.minor = minor;
- ans.patch = patch;
+ ans.v0.major = major;
+ ans.v0.minor = minor;
+ ans.v0.patch = patch;
- CEPH_STR_ADD(ans, text, text);
+ CEPH_STR_ADD(ans, v0.text, text);
return CEPH_RET(client->sd, 0, ans);
}
UserPerm *userperm;
int32_t err;
- userperm = ceph_userperm_new(req->userperm_new.uid,
- req->userperm_new.gid,
- req->userperm_new.groups, (gid_t *)data);
+ userperm = ceph_userperm_new(req->userperm_new.v0.uid,
+ req->userperm_new.v0.gid,
+ req->userperm_new.v0.groups,
+ (gid_t *)data);
TRACE("ceph_userperm_new(%u, %u, %u) -> %p", req->userperm_new.uid,
req->userperm_new.gid, req->userperm_new.groups, userperm);
err = -ENOMEM;
if (userperm != NULL) {
- ans.userperm = ptr_checksum(&global_random, userperm);
+ ans.v0.userperm = ptr_checksum(&global_random, userperm);
err = 0;
}
UserPerm *perms;
int32_t err;
- err = ptr_check(&global_random, req->userperm_destroy.userperm,
+ err = ptr_check(&global_random, req->userperm_destroy.v0.userperm,
(void **)&perms);
if (err >= 0) {
const char *id;
int32_t err;
- id = CEPH_STR_GET(req->create, id, data);
+ id = CEPH_STR_GET(req->create, v0.id, data);
err = proxy_mount_create(&mount, id);
TRACE("ceph_create(%p, '%s') -> %d", mount, id, err);
if (err >= 0) {
- ans.cmount = ptr_checksum(&client->random, mount);
+ ans.v0.cmount = ptr_checksum(&client->random, mount);
}
return CEPH_COMPLETE(client, err, ans);
proxy_mount_t *mount;
int32_t err;
- err = ptr_check(&client->random, req->release.cmount, (void **)&mount);
+ err = ptr_check(&client->random, req->release.v0.cmount,
+ (void **)&mount);
if (err >= 0) {
err = proxy_mount_release(mount);
TRACE("ceph_release(%p) -> %d", mount, err);
const char *path;
int32_t err;
- err = ptr_check(&client->random, req->conf_read_file.cmount,
+ err = ptr_check(&client->random, req->conf_read_file.v0.cmount,
(void **)&mount);
if (err >= 0) {
- path = CEPH_STR_GET(req->conf_read_file, path, data);
+ path = CEPH_STR_GET(req->conf_read_file, v0.path, data);
err = proxy_mount_config(mount, path);
TRACE("ceph_conf_read_file(%p, '%s') ->%d", mount, path, err);
buffer = client->buffer;
size = client->buffer_size;
- if (req->conf_get.size < size) {
- size = req->conf_get.size;
+ if (req->conf_get.v0.size < size) {
+ size = req->conf_get.v0.size;
}
- err = ptr_check(&client->random, req->conf_get.cmount, (void **)&mount);
+ err = ptr_check(&client->random, req->conf_get.v0.cmount,
+ (void **)&mount);
if (err >= 0) {
- option = CEPH_STR_GET(req->conf_get, option, data);
+ option = CEPH_STR_GET(req->conf_get, v0.option, data);
err = proxy_mount_get(mount, option, buffer, size);
TRACE("ceph_conf_get(%p, '%s', '%s') -> %d", mount, option,
(char *)buffer, err);
if (err >= 0) {
- CEPH_DATA_ADD(ans, value, buffer, strlen(buffer) + 1);
+ CEPH_DATA_ADD(ans, v0.value, buffer,
+ strlen(buffer) + 1);
}
}
const char *option, *value;
int32_t err;
- err = ptr_check(&client->random, req->conf_set.cmount, (void **)&mount);
+ err = ptr_check(&client->random, req->conf_set.v0.cmount,
+ (void **)&mount);
if (err >= 0) {
- option = CEPH_STR_GET(req->conf_set, option, data);
- value = CEPH_STR_GET(req->conf_set, value,
- (const char *)(data) + req->conf_set.option);
+ option = CEPH_STR_GET(req->conf_set, v0.option, data);
+ value = CEPH_STR_GET(req->conf_set, v0.value,
+ (const char *)(data) + req->conf_set.v0.option);
err = proxy_mount_set(mount, option, value);
TRACE("ceph_conf_set(%p, '%s', '%s') -> %d", mount, option,
proxy_mount_t *mount;
int32_t err;
- err = ptr_check(&client->random, req->init.cmount, (void **)&mount);
+ err = ptr_check(&client->random, req->init.v0.cmount, (void **)&mount);
if (err >= 0) {
err = proxy_mount_init(mount);
TRACE("ceph_init(%p) -> %d", mount, err);
const char *fs;
int32_t err;
- err = ptr_check(&client->random, req->select_filesystem.cmount,
+ err = ptr_check(&client->random, req->select_filesystem.v0.cmount,
(void **)&mount);
if (err >= 0) {
- fs = CEPH_STR_GET(req->select_filesystem, fs, data);
+ fs = CEPH_STR_GET(req->select_filesystem, v0.fs, data);
err = proxy_mount_select(mount, fs);
TRACE("ceph_select_filesystem(%p, '%s') -> %d", mount, fs, err);
const char *root;
int32_t err;
- err = ptr_check(&client->random, req->mount.cmount, (void **)&mount);
+ err = ptr_check(&client->random, req->mount.v0.cmount, (void **)&mount);
if (err >= 0) {
- root = CEPH_STR_GET(req->mount, root, data);
+ root = CEPH_STR_GET(req->mount, v0.root, data);
err = proxy_mount_mount(mount, root);
TRACE("ceph_mount(%p, '%s') -> %d", mount, root, err);
proxy_mount_t *mount;
int32_t err;
- err = ptr_check(&client->random, req->unmount.cmount, (void **)&mount);
+ err = ptr_check(&client->random, req->unmount.v0.cmount,
+ (void **)&mount);
if (err >= 0) {
err = proxy_mount_unmount(mount);
struct Inode *inode;
int32_t err;
- err = ptr_check(&client->random, req->ll_statfs.cmount,
+ err = ptr_check(&client->random, req->ll_statfs.v0.cmount,
(void **)&mount);
if (err >= 0) {
- err = ptr_check(&client->random, req->ll_statfs.inode,
+ err = ptr_check(&client->random, req->ll_statfs.v0.inode,
(void **)&inode);
}
uint32_t want, flags;
int32_t err;
- err = ptr_check(&client->random, req->ll_lookup.cmount,
+ err = ptr_check(&client->random, req->ll_lookup.v0.cmount,
(void **)&mount);
if (err >= 0) {
- err = ptr_check(&client->random, req->ll_lookup.parent,
+ err = ptr_check(&client->random, req->ll_lookup.v0.parent,
(void **)&parent);
}
if (err >= 0) {
- err = ptr_check(&global_random, req->ll_lookup.userperm,
+ err = ptr_check(&global_random, req->ll_lookup.v0.userperm,
(void **)&perms);
}
if (err >= 0) {
- want = req->ll_lookup.want;
- flags = req->ll_lookup.flags;
- name = CEPH_STR_GET(req->ll_lookup, name, data);
+ want = req->ll_lookup.v0.want;
+ flags = req->ll_lookup.v0.flags;
+ name = CEPH_STR_GET(req->ll_lookup, v0.name, data);
CEPH_BUFF_ADD(ans, &stx, sizeof(stx));
mount, parent, name, out, want, flags, perms, err);
if (err >= 0) {
- ans.inode = ptr_checksum(&client->random, out);
+ ans.v0.inode = ptr_checksum(&client->random, out);
}
}
struct inodeno_t ino;
int32_t err;
- err = ptr_check(&client->random, req->ll_lookup_inode.cmount,
+ err = ptr_check(&client->random, req->ll_lookup_inode.v0.cmount,
(void **)&mount);
if (err >= 0) {
- ino = req->ll_lookup_inode.ino;
+ ino = req->ll_lookup_inode.v0.ino;
err = ceph_ll_lookup_inode(proxy_cmount(mount), ino, &inode);
TRACE("ceph_ll_lookup_inode(%p, %lu, %p) -> %d", mount, ino.val,
inode, err);
if (err >= 0) {
- ans.inode = ptr_checksum(&client->random, inode);
+ ans.v0.inode = ptr_checksum(&client->random, inode);
}
}
proxy_mount_t *mount;
int32_t err;
- err = ptr_check(&client->random, req->ll_lookup_root.cmount,
+ err = ptr_check(&client->random, req->ll_lookup_root.v0.cmount,
(void **)&mount);
if (err >= 0) {
/* The libcephfs view of the root of the mount could be
err);
if (err >= 0) {
- ans.inode = ptr_checksum(&client->random, mount->root);
+ ans.v0.inode = ptr_checksum(&client->random,
+ mount->root);
}
}
struct Inode *inode;
int32_t err;
- err = ptr_check(&client->random, req->ll_put.cmount, (void **)&mount);
+ err = ptr_check(&client->random, req->ll_put.v0.cmount,
+ (void **)&mount);
if (err >= 0) {
- err = ptr_check(&client->random, req->ll_put.inode,
+ err = ptr_check(&client->random, req->ll_put.v0.inode,
(void **)&inode);
}
uint32_t want, flags;
int32_t err;
- err = ptr_check(&client->random, req->ll_walk.cmount, (void **)&mount);
+ err = ptr_check(&client->random, req->ll_walk.v0.cmount,
+ (void **)&mount);
if (err >= 0) {
- err = ptr_check(&global_random, req->ll_walk.userperm,
+ err = ptr_check(&global_random, req->ll_walk.v0.userperm,
(void **)&perms);
}
if (err >= 0) {
- want = req->ll_walk.want;
- flags = req->ll_walk.flags;
- path = CEPH_STR_GET(req->ll_walk, path, data);
+ want = req->ll_walk.v0.want;
+ flags = req->ll_walk.v0.flags;
+ path = CEPH_STR_GET(req->ll_walk, v0.path, data);
CEPH_BUFF_ADD(ans, &stx, sizeof(stx));
path, inode, want, flags, perms, err);
if (err >= 0) {
- ans.inode = ptr_checksum(&client->random, inode);
+ ans.v0.inode = ptr_checksum(&client->random, inode);
}
}
char *realpath;
int32_t err;
- err = ptr_check(&client->random, req->chdir.cmount, (void **)&mount);
+ err = ptr_check(&client->random, req->chdir.v0.cmount, (void **)&mount);
if (err >= 0) {
- path = CEPH_STR_GET(req->chdir, path, data);
+ path = CEPH_STR_GET(req->chdir, v0.path, data);
/* Since the libcephfs mount may be shared, we can't really
* change the current directory to avoid interferences with
const char *path;
int32_t err;
- err = ptr_check(&client->random, req->getcwd.cmount, (void **)&mount);
+ err = ptr_check(&client->random, req->getcwd.v0.cmount,
+ (void **)&mount);
if (err >= 0) {
/* We just return the cached name from the last chdir(). */
path = mount->cwd_path;
TRACE("ceph_getcwd(%p) -> '%s'", mount, path);
- CEPH_STR_ADD(ans, path, path);
+ CEPH_STR_ADD(ans, v0.path, path);
err = 0;
}
struct ceph_dir_result *dirp;
int32_t err;
- err = ptr_check(&client->random, req->readdir.cmount, (void **)&mount);
+ err = ptr_check(&client->random, req->readdir.v0.cmount,
+ (void **)&mount);
if (err >= 0) {
- err = ptr_check(&client->random, req->readdir.dir,
+ err = ptr_check(&client->random, req->readdir.v0.dir,
(void **)&dirp);
}
err = ceph_readdir_r(proxy_cmount(mount), dirp, &de);
TRACE("ceph_readdir_r(%p, %p, %p) -> %d", mount, dirp, &de,
err);
- ans.eod = true;
+ ans.v0.eod = true;
if (err > 0) {
- ans.eod = false;
+ ans.v0.eod = false;
CEPH_BUFF_ADD(ans, &de,
offset_of(struct dirent, d_name) +
strlen(de.d_name) + 1);
struct ceph_dir_result *dirp;
int32_t err;
- err = ptr_check(&client->random, req->rewinddir.cmount,
+ err = ptr_check(&client->random, req->rewinddir.v0.cmount,
(void **)&mount);
if (err >= 0) {
- err = ptr_check(&client->random, req->rewinddir.dir,
+ err = ptr_check(&client->random, req->rewinddir.v0.dir,
(void **)&dirp);
}
struct Fh *fh;
int32_t flags, err;
- err = ptr_check(&client->random, req->ll_open.cmount, (void **)&mount);
+ err = ptr_check(&client->random, req->ll_open.v0.cmount,
+ (void **)&mount);
if (err >= 0) {
- err = ptr_check(&client->random, req->ll_open.inode,
+ err = ptr_check(&client->random, req->ll_open.v0.inode,
(void **)&inode);
}
if (err >= 0) {
- err = ptr_check(&global_random, req->ll_open.userperm,
+ err = ptr_check(&global_random, req->ll_open.v0.userperm,
(void **)&perms);
}
if (err >= 0) {
- flags = req->ll_open.flags;
+ flags = req->ll_open.v0.flags;
err = ceph_ll_open(proxy_cmount(mount), inode, flags, &fh,
perms);
flags, fh, perms, err);
if (err >= 0) {
- ans.fh = ptr_checksum(&client->random, fh);
+ ans.v0.fh = ptr_checksum(&client->random, fh);
}
}
uint32_t want, flags;
int32_t oflags, err;
- err = ptr_check(&client->random, req->ll_create.cmount,
+ err = ptr_check(&client->random, req->ll_create.v0.cmount,
(void **)&mount);
if (err >= 0) {
- err = ptr_check(&client->random, req->ll_create.parent,
+ err = ptr_check(&client->random, req->ll_create.v0.parent,
(void **)&parent);
}
if (err >= 0) {
- err = ptr_check(&global_random, req->ll_create.userperm,
+ err = ptr_check(&global_random, req->ll_create.v0.userperm,
(void **)&perms);
}
if (err >= 0) {
- mode = req->ll_create.mode;
- oflags = req->ll_create.oflags;
- want = req->ll_create.want;
- flags = req->ll_create.flags;
- name = CEPH_STR_GET(req->ll_create, name, data);
+ mode = req->ll_create.v0.mode;
+ oflags = req->ll_create.v0.oflags;
+ want = req->ll_create.v0.want;
+ flags = req->ll_create.v0.flags;
+ name = CEPH_STR_GET(req->ll_create, v0.name, data);
CEPH_BUFF_ADD(ans, &stx, sizeof(stx));
perms, err);
if (err >= 0) {
- ans.fh = ptr_checksum(&client->random, fh);
- ans.inode = ptr_checksum(&client->random, inode);
+ ans.v0.fh = ptr_checksum(&client->random, fh);
+ ans.v0.inode = ptr_checksum(&client->random, inode);
}
}
uint32_t want, flags;
int32_t err;
- err = ptr_check(&client->random, req->ll_mknod.cmount, (void **)&mount);
+ err = ptr_check(&client->random, req->ll_mknod.v0.cmount,
+ (void **)&mount);
if (err >= 0) {
- err = ptr_check(&client->random, req->ll_mknod.parent,
+ err = ptr_check(&client->random, req->ll_mknod.v0.parent,
(void **)&parent);
}
if (err >= 0) {
- err = ptr_check(&global_random, req->ll_mknod.userperm,
+ err = ptr_check(&global_random, req->ll_mknod.v0.userperm,
(void **)&perms);
}
if (err >= 0) {
- mode = req->ll_mknod.mode;
- rdev = req->ll_mknod.rdev;
- want = req->ll_mknod.want;
- flags = req->ll_mknod.flags;
- name = CEPH_STR_GET(req->ll_mknod, name, data);
+ mode = req->ll_mknod.v0.mode;
+ rdev = req->ll_mknod.v0.rdev;
+ want = req->ll_mknod.v0.want;
+ flags = req->ll_mknod.v0.flags;
+ name = CEPH_STR_GET(req->ll_mknod, v0.name, data);
CEPH_BUFF_ADD(ans, &stx, sizeof(stx));
perms, err);
if (err >= 0) {
- ans.inode = ptr_checksum(&client->random, inode);
+ ans.v0.inode = ptr_checksum(&client->random, inode);
}
}
struct Fh *fh;
int32_t err;
- err = ptr_check(&client->random, req->ll_close.cmount, (void **)&mount);
+ err = ptr_check(&client->random, req->ll_close.v0.cmount,
+ (void **)&mount);
if (err >= 0) {
- err = ptr_check(&client->random, req->ll_close.fh,
+ err = ptr_check(&client->random, req->ll_close.v0.fh,
(void **)&fh);
}
UserPerm *perms;
int32_t err;
- err = ptr_check(&client->random, req->ll_rename.cmount,
+ err = ptr_check(&client->random, req->ll_rename.v0.cmount,
(void **)&mount);
if (err >= 0) {
- err = ptr_check(&client->random, req->ll_rename.old_parent,
+ err = ptr_check(&client->random, req->ll_rename.v0.old_parent,
(void **)&old_parent);
}
if (err >= 0) {
- err = ptr_check(&client->random, req->ll_rename.new_parent,
+ err = ptr_check(&client->random, req->ll_rename.v0.new_parent,
(void **)&new_parent);
}
if (err >= 0) {
- err = ptr_check(&global_random, req->ll_rename.userperm,
+ err = ptr_check(&global_random, req->ll_rename.v0.userperm,
(void **)&perms);
}
if (err >= 0) {
- old_name = CEPH_STR_GET(req->ll_rename, old_name, data);
- new_name = CEPH_STR_GET(req->ll_rename, new_name,
- (const char *)data + req->ll_rename.old_name);
+ old_name = CEPH_STR_GET(req->ll_rename, v0.old_name, data);
+ new_name = CEPH_STR_GET(req->ll_rename, v0.new_name,
+ (const char *)data + req->ll_rename.v0.old_name);
err = ceph_ll_rename(proxy_cmount(mount), old_parent, old_name,
new_parent, new_name, perms);
off_t offset, pos;
int32_t whence, err;
- err = ptr_check(&client->random, req->ll_lseek.cmount, (void **)&mount);
+ err = ptr_check(&client->random, req->ll_lseek.v0.cmount,
+ (void **)&mount);
if (err >= 0) {
- err = ptr_check(&client->random, req->ll_lseek.fh,
+ err = ptr_check(&client->random, req->ll_lseek.v0.fh,
(void **)&fh);
}
if (err >= 0) {
- offset = req->ll_lseek.offset;
- whence = req->ll_lseek.whence;
+ offset = req->ll_lseek.v0.offset;
+ whence = req->ll_lseek.v0.whence;
pos = ceph_ll_lseek(proxy_cmount(mount), fh, offset, whence);
err = -errno;
offset, whence, pos, -err);
if (pos >= 0) {
- ans.offset = pos;
+ ans.v0.offset = pos;
err = 0;
}
}
buffer = client->buffer;
- err = ptr_check(&client->random, req->ll_read.cmount, (void **)&mount);
+ err = ptr_check(&client->random, req->ll_read.v0.cmount,
+ (void **)&mount);
if (err >= 0) {
- err = ptr_check(&client->random, req->ll_read.fh, (void **)&fh);
+ err = ptr_check(&client->random, req->ll_read.v0.fh,
+ (void **)&fh);
}
if (err >= 0) {
- offset = req->ll_read.offset;
- len = req->ll_read.len;
+ offset = req->ll_read.v0.offset;
+ len = req->ll_read.v0.len;
size = client->buffer_size;
if (len > size) {
int64_t offset;
int32_t err;
- err = ptr_check(&client->random, req->ll_write.cmount, (void **)&mount);
+ err = ptr_check(&client->random, req->ll_write.v0.cmount,
+ (void **)&mount);
if (err >= 0) {
- err = ptr_check(&client->random, req->ll_write.fh,
+ err = ptr_check(&client->random, req->ll_write.v0.fh,
(void **)&fh);
}
if (err >= 0) {
- offset = req->ll_write.offset;
- len = req->ll_write.len;
+ offset = req->ll_write.v0.offset;
+ len = req->ll_write.v0.len;
err = ceph_ll_write(proxy_cmount(mount), fh, offset, len, data);
TRACE("ceph_ll_write(%p, %p, %ld, %lu) -> %d", mount, fh,
UserPerm *perms;
int32_t err;
- err = ptr_check(&client->random, req->ll_link.cmount, (void **)&mount);
+ err = ptr_check(&client->random, req->ll_link.v0.cmount,
+ (void **)&mount);
if (err >= 0) {
- err = ptr_check(&client->random, req->ll_link.inode,
+ err = ptr_check(&client->random, req->ll_link.v0.inode,
(void **)&inode);
}
if (err >= 0) {
- err = ptr_check(&client->random, req->ll_link.parent,
+ err = ptr_check(&client->random, req->ll_link.v0.parent,
(void **)&parent);
}
if (err >= 0) {
- err = ptr_check(&global_random, req->ll_link.userperm,
+ err = ptr_check(&global_random, req->ll_link.v0.userperm,
(void **)&perms);
}
if (err >= 0) {
- name = CEPH_STR_GET(req->ll_link, name, data);
+ name = CEPH_STR_GET(req->ll_link, v0.name, data);
err = ceph_ll_link(proxy_cmount(mount), inode, parent, name,
perms);
UserPerm *perms;
int32_t err;
- err = ptr_check(&client->random, req->ll_unlink.cmount,
+ err = ptr_check(&client->random, req->ll_unlink.v0.cmount,
(void **)&mount);
if (err >= 0) {
- err = ptr_check(&client->random, req->ll_unlink.parent,
+ err = ptr_check(&client->random, req->ll_unlink.v0.parent,
(void **)&parent);
}
if (err >= 0) {
- err = ptr_check(&global_random, req->ll_unlink.userperm,
+ err = ptr_check(&global_random, req->ll_unlink.v0.userperm,
(void **)&perms);
}
if (err >= 0) {
- name = CEPH_STR_GET(req->ll_unlink, name, data);
+ name = CEPH_STR_GET(req->ll_unlink, v0.name, data);
err = ceph_ll_unlink(proxy_cmount(mount), parent, name, perms);
TRACE("ceph_ll_unlink(%p, %p, '%s', %p) -> %d", mount, parent,
uint32_t want, flags;
int32_t err;
- err = ptr_check(&client->random, req->ll_getattr.cmount,
+ err = ptr_check(&client->random, req->ll_getattr.v0.cmount,
(void **)&mount);
if (err >= 0) {
- err = ptr_check(&client->random, req->ll_getattr.inode,
+ err = ptr_check(&client->random, req->ll_getattr.v0.inode,
(void **)&inode);
}
if (err >= 0) {
- err = ptr_check(&global_random, req->ll_getattr.userperm,
+ err = ptr_check(&global_random, req->ll_getattr.v0.userperm,
(void **)&perms);
}
if (err >= 0) {
- want = req->ll_getattr.want;
- flags = req->ll_getattr.flags;
+ want = req->ll_getattr.v0.want;
+ flags = req->ll_getattr.v0.flags;
CEPH_BUFF_ADD(ans, &stx, sizeof(stx));
UserPerm *perms;
int32_t mask, err;
- err = ptr_check(&client->random, req->ll_setattr.cmount,
+ err = ptr_check(&client->random, req->ll_setattr.v0.cmount,
(void **)&mount);
if (err >= 0) {
- err = ptr_check(&client->random, req->ll_setattr.inode,
+ err = ptr_check(&client->random, req->ll_setattr.v0.inode,
(void **)&inode);
}
if (err >= 0) {
- err = ptr_check(&global_random, req->ll_setattr.userperm,
+ err = ptr_check(&global_random, req->ll_setattr.v0.userperm,
(void **)&perms);
}
if (err >= 0) {
- mask = req->ll_setattr.mask;
+ mask = req->ll_setattr.v0.mask;
err = ceph_ll_setattr(proxy_cmount(mount), inode, (void *)data,
mask, perms);
mode_t mode;
int32_t err;
- err = ptr_check(&client->random, req->ll_fallocate.cmount,
+ err = ptr_check(&client->random, req->ll_fallocate.v0.cmount,
(void **)&mount);
if (err >= 0) {
- err = ptr_check(&client->random, req->ll_fallocate.fh,
+ err = ptr_check(&client->random, req->ll_fallocate.v0.fh,
(void **)&fh);
}
if (err >= 0) {
- mode = req->ll_fallocate.mode;
- offset = req->ll_fallocate.offset;
- len = req->ll_fallocate.length;
+ mode = req->ll_fallocate.v0.mode;
+ offset = req->ll_fallocate.v0.offset;
+ len = req->ll_fallocate.v0.length;
err = ceph_ll_fallocate(proxy_cmount(mount), fh, mode, offset,
len);
struct Fh *fh;
int32_t dataonly, err;
- err = ptr_check(&client->random, req->ll_fsync.cmount, (void **)&mount);
+ err = ptr_check(&client->random, req->ll_fsync.v0.cmount,
+ (void **)&mount);
if (err >= 0) {
- err = ptr_check(&client->random, req->ll_fsync.fh,
+ err = ptr_check(&client->random, req->ll_fsync.v0.fh,
(void **)&fh);
}
if (err >= 0) {
- dataonly = req->ll_fsync.dataonly;
+ dataonly = req->ll_fsync.v0.dataonly;
err = ceph_ll_fsync(proxy_cmount(mount), fh, dataonly);
TRACE("ceph_ll_fsync(%p, %p, %d) -> %d", mount, fh, dataonly,
size_t size;
int32_t err;
- err = ptr_check(&client->random, req->ll_listxattr.cmount,
+ err = ptr_check(&client->random, req->ll_listxattr.v0.cmount,
(void **)&mount);
if (err >= 0) {
- err = ptr_check(&client->random, req->ll_listxattr.inode,
+ err = ptr_check(&client->random, req->ll_listxattr.v0.inode,
(void **)&inode);
}
if (err >= 0) {
- err = ptr_check(&global_random, req->ll_listxattr.userperm,
+ err = ptr_check(&global_random, req->ll_listxattr.v0.userperm,
(void **)&perms);
}
if (err >= 0) {
- size = req->ll_listxattr.size;
+ size = req->ll_listxattr.v0.size;
if (size > client->buffer_size) {
size = client->buffer_size;
}
size, perms, err);
if (err >= 0) {
- ans.size = size;
+ ans.v0.size = size;
CEPH_BUFF_ADD(ans, client->buffer, size);
}
}
size_t size;
int32_t err;
- err = ptr_check(&client->random, req->ll_getxattr.cmount,
+ err = ptr_check(&client->random, req->ll_getxattr.v0.cmount,
(void **)&mount);
if (err >= 0) {
- err = ptr_check(&client->random, req->ll_getxattr.inode,
+ err = ptr_check(&client->random, req->ll_getxattr.v0.inode,
(void **)&inode);
}
if (err >= 0) {
- err = ptr_check(&global_random, req->ll_getxattr.userperm,
+ err = ptr_check(&global_random, req->ll_getxattr.v0.userperm,
(void **)&perms);
}
if (err >= 0) {
- size = req->ll_getxattr.size;
- name = CEPH_STR_GET(req->ll_getxattr, name, data);
+ size = req->ll_getxattr.v0.size;
+ name = CEPH_STR_GET(req->ll_getxattr, v0.name, data);
if (size > client->buffer_size) {
size = client->buffer_size;
size_t size;
int32_t flags, err;
- err = ptr_check(&client->random, req->ll_setxattr.cmount,
+ err = ptr_check(&client->random, req->ll_setxattr.v0.cmount,
(void **)&mount);
if (err >= 0) {
- err = ptr_check(&client->random, req->ll_setxattr.inode,
+ err = ptr_check(&client->random, req->ll_setxattr.v0.inode,
(void **)&inode);
}
if (err >= 0) {
- err = ptr_check(&global_random, req->ll_setxattr.userperm,
+ err = ptr_check(&global_random, req->ll_setxattr.v0.userperm,
(void **)&perms);
}
if (err >= 0) {
- name = CEPH_STR_GET(req->ll_setxattr, name, data);
- value = (const char *)data + req->ll_setxattr.name;
- size = req->ll_setxattr.size;
- flags = req->ll_setxattr.flags;
+ name = CEPH_STR_GET(req->ll_setxattr, v0.name, data);
+ value = (const char *)data + req->ll_setxattr.v0.name;
+ size = req->ll_setxattr.v0.size;
+ flags = req->ll_setxattr.v0.flags;
err = ceph_ll_setxattr(proxy_cmount(mount), inode, name, value,
size, flags, perms);
UserPerm *perms;
int32_t err;
- err = ptr_check(&client->random, req->ll_removexattr.cmount,
+ err = ptr_check(&client->random, req->ll_removexattr.v0.cmount,
(void **)&mount);
if (err >= 0) {
- err = ptr_check(&client->random, req->ll_removexattr.inode,
+ err = ptr_check(&client->random, req->ll_removexattr.v0.inode,
(void **)&inode);
}
if (err >= 0) {
- err = ptr_check(&global_random, req->ll_removexattr.userperm,
+ err = ptr_check(&global_random, req->ll_removexattr.v0.userperm,
(void **)&perms);
}
if (err >= 0) {
- name = CEPH_STR_GET(req->ll_removexattr, name, data);
+ name = CEPH_STR_GET(req->ll_removexattr, v0.name, data);
err = ceph_ll_removexattr(proxy_cmount(mount), inode, name,
perms);
size_t size;
int32_t err;
- err = ptr_check(&client->random, req->ll_readlink.cmount,
+ err = ptr_check(&client->random, req->ll_readlink.v0.cmount,
(void **)&mount);
if (err >= 0) {
- err = ptr_check(&client->random, req->ll_readlink.inode,
+ err = ptr_check(&client->random, req->ll_readlink.v0.inode,
(void **)&inode);
}
if (err >= 0) {
- err = ptr_check(&global_random, req->ll_readlink.userperm,
+ err = ptr_check(&global_random, req->ll_readlink.v0.userperm,
(void **)&perms);
}
if (err >= 0) {
- size = req->ll_readlink.size;
+ size = req->ll_readlink.v0.size;
if (size > client->buffer_size) {
size = client->buffer_size;
uint32_t want, flags;
int32_t err;
- err = ptr_check(&client->random, req->ll_symlink.cmount,
+ err = ptr_check(&client->random, req->ll_symlink.v0.cmount,
(void **)&mount);
if (err >= 0) {
- err = ptr_check(&client->random, req->ll_symlink.parent,
+ err = ptr_check(&client->random, req->ll_symlink.v0.parent,
(void **)&parent);
}
if (err >= 0) {
- err = ptr_check(&global_random, req->ll_symlink.userperm,
+ err = ptr_check(&global_random, req->ll_symlink.v0.userperm,
(void **)&perms);
}
if (err >= 0) {
- name = CEPH_STR_GET(req->ll_symlink, name, data);
- value = CEPH_STR_GET(req->ll_symlink, target,
- (const char *)data + req->ll_symlink.name);
- want = req->ll_symlink.want;
- flags = req->ll_symlink.flags;
+ name = CEPH_STR_GET(req->ll_symlink, v0.name, data);
+ value = CEPH_STR_GET(req->ll_symlink, v0.target,
+ (const char *)data + req->ll_symlink.v0.name);
+ want = req->ll_symlink.v0.want;
+ flags = req->ll_symlink.v0.flags;
CEPH_BUFF_ADD(ans, &stx, sizeof(stx));
err);
if (err >= 0) {
- ans.inode = ptr_checksum(&client->random, inode);
+ ans.v0.inode = ptr_checksum(&client->random, inode);
}
}
UserPerm *perms;
int32_t err;
- err = ptr_check(&client->random, req->ll_opendir.cmount,
+ err = ptr_check(&client->random, req->ll_opendir.v0.cmount,
(void **)&mount);
if (err >= 0) {
- err = ptr_check(&client->random, req->ll_opendir.inode,
+ err = ptr_check(&client->random, req->ll_opendir.v0.inode,
(void **)&inode);
}
if (err >= 0) {
- err = ptr_check(&global_random, req->ll_opendir.userperm,
+ err = ptr_check(&global_random, req->ll_opendir.v0.userperm,
(void **)&perms);
}
dirp, perms, err);
if (err >= 0) {
- ans.dir = ptr_checksum(&client->random, dirp);
+ ans.v0.dir = ptr_checksum(&client->random, dirp);
}
}
uint32_t want, flags;
int32_t err;
- err = ptr_check(&client->random, req->ll_mkdir.cmount, (void **)&mount);
+ err = ptr_check(&client->random, req->ll_mkdir.v0.cmount, (void **)&mount);
if (err >= 0) {
- err = ptr_check(&client->random, req->ll_mkdir.parent,
+ err = ptr_check(&client->random, req->ll_mkdir.v0.parent,
(void **)&parent);
}
if (err >= 0) {
- err = ptr_check(&global_random, req->ll_mkdir.userperm,
+ err = ptr_check(&global_random, req->ll_mkdir.v0.userperm,
(void **)&perms);
}
if (err >= 0) {
- mode = req->ll_mkdir.mode;
- want = req->ll_mkdir.want;
- flags = req->ll_mkdir.flags;
- name = CEPH_STR_GET(req->ll_mkdir, name, data);
+ mode = req->ll_mkdir.v0.mode;
+ want = req->ll_mkdir.v0.want;
+ flags = req->ll_mkdir.v0.flags;
+ name = CEPH_STR_GET(req->ll_mkdir, v0.name, data);
CEPH_BUFF_ADD(ans, &stx, sizeof(stx));
err);
if (err >= 0) {
- ans.inode = ptr_checksum(&client->random, inode);
+ ans.v0.inode = ptr_checksum(&client->random, inode);
}
}
UserPerm *perms;
int32_t err;
- err = ptr_check(&client->random, req->ll_rmdir.cmount, (void **)&mount);
+ err = ptr_check(&client->random, req->ll_rmdir.v0.cmount,
+ (void **)&mount);
if (err >= 0) {
- err = ptr_check(&client->random, req->ll_rmdir.parent,
+ err = ptr_check(&client->random, req->ll_rmdir.v0.parent,
(void **)&parent);
}
if (err >= 0) {
- err = ptr_check(&global_random, req->ll_rmdir.userperm,
+ err = ptr_check(&global_random, req->ll_rmdir.v0.userperm,
(void **)&perms);
}
if (err >= 0) {
- name = CEPH_STR_GET(req->ll_rmdir, name, data);
+ name = CEPH_STR_GET(req->ll_rmdir, v0.name, data);
err = ceph_ll_rmdir(proxy_cmount(mount), parent, name, perms);
TRACE("ceph_ll_rmdir(%p, %p, '%s', %p) -> %d", mount, parent,
struct ceph_dir_result *dirp;
int32_t err;
- err = ptr_check(&client->random, req->ll_releasedir.cmount,
+ err = ptr_check(&client->random, req->ll_releasedir.v0.cmount,
(void **)&mount);
if (err >= 0) {
- err = ptr_check(&client->random, req->ll_releasedir.dir,
+ err = ptr_check(&client->random, req->ll_releasedir.v0.dir,
(void **)&dirp);
}
UserPerm *perms;
int32_t err;
- err = ptr_check(&client->random, req->mount_perms.cmount,
+ err = ptr_check(&client->random, req->mount_perms.v0.cmount,
(void **)&mount);
if (err >= 0) {
perms = ceph_mount_perms(proxy_cmount(mount));
TRACE("ceph_mount_perms(%p) -> %p", mount, perms);
- ans.userperm = ptr_checksum(&global_random, perms);
+ ans.v0.userperm = ptr_checksum(&global_random, perms);
}
return CEPH_COMPLETE(client, err, ans);
async_io = container_of(cb_info, proxy_async_io_t, io_info);
async = async_io->async;
- cbk.info = (uintptr_t)cb_info->priv;
- cbk.res = cb_info->result;
+ cbk.v0.info = (uintptr_t)cb_info->priv;
+ cbk.v0.res = cb_info->result;
- if ((cbk.res >= 0) && !cb_info->write) {
- CEPH_BUFF_ADD(cbk, cb_info->iov->iov_base, cbk.res);
+ if ((cbk.v0.res >= 0) && !cb_info->write) {
+ CEPH_BUFF_ADD(cbk, cb_info->iov->iov_base, cbk.v0.res);
}
err = CEPH_CALL_CBK(async->fd, LIBCEPHFSD_CBK_LL_NONBLOCKING_RW, cbk);
return -EOPNOTSUPP;
}
- err = ptr_check(&client->random, req->ll_nonblocking_rw.cmount,
+ err = ptr_check(&client->random, req->ll_nonblocking_rw.v0.cmount,
(void **)&mount);
if (err < 0) {
goto done;
memset(io_info, 0, sizeof(struct ceph_ll_io_info));
io_info->callback = libcephfsd_ll_nonblocking_rw_cbk;
- io_info->priv = (void *)(uintptr_t)req->ll_nonblocking_rw.info;
+ io_info->priv = (void *)(uintptr_t)req->ll_nonblocking_rw.v0.info;
io_info->iov = &async_io->iov;
io_info->iovcnt = 1;
- io_info->off = req->ll_nonblocking_rw.off;
- io_info->write = req->ll_nonblocking_rw.write;
- io_info->fsync = req->ll_nonblocking_rw.fsync;
- io_info->syncdataonly = req->ll_nonblocking_rw.syncdataonly;
+ io_info->off = req->ll_nonblocking_rw.v0.off;
+ io_info->write = req->ll_nonblocking_rw.v0.write;
+ io_info->fsync = req->ll_nonblocking_rw.v0.fsync;
+ io_info->syncdataonly = req->ll_nonblocking_rw.v0.syncdataonly;
- err = ptr_check(&client->random, req->ll_nonblocking_rw.fh,
+ err = ptr_check(&client->random, req->ll_nonblocking_rw.v0.fh,
(void **)&io_info->fh);
if (err < 0) {
goto done;
async_io->iov.iov_len = data_size;
async_io->iov.iov_base = (void *)data;
} else {
- async_io->iov.iov_len = req->ll_nonblocking_rw.size;
+ async_io->iov.iov_len = req->ll_nonblocking_rw.v0.size;
async_io->iov.iov_base = proxy_malloc(async_io->iov.iov_len);
if (async_io->iov.iov_base == NULL) {
proxy_free(async_io);
res = ceph_ll_nonblocking_readv_writev(proxy_cmount(mount), io_info);
TRACE("ceph_ll_nonblocking_readv_writev(%p) -> %ld", mount, res);
- ans.res = res;
+ ans.v0.res = res;
if (res < 0) {
if (!io_info->write) {
proxy_free(async_io->iov.iov_base);