struct ceph_mon_statfs {
+ __le64 have_version;
ceph_fsid_t fsid;
__le64 tid;
};
};
struct ceph_osd_getmap {
+ __le64 have_version;
ceph_fsid_t fsid;
__le32 start;
} __attribute__ ((packed));
struct ceph_mds_getmap {
- __le64 have;
+ __le64 have_version;
ceph_fsid_t fsid;
} __attribute__ ((packed));
+struct ceph_client_mount {
+ __le64 have_version;
+} __attribute__ ((packed));
+
+struct ceph_client_unmount {
+ __le64 have_version;
+} __attribute__ ((packed));
/*
* client authentication ticket
return;
h = msg->front.iov_base;
h->fsid = monc->monmap->fsid;
- h->have = cpu_to_le64(monc->want_mdsmap - 1);
+ h->have_version = cpu_to_le64(monc->want_mdsmap - 1);
msg->hdr.dst = monc->monmap->mon_inst[mon];
ceph_msg_send(monc->client->msgr, msg, 0);
}
{
struct ceph_msg *msg;
int mon = pick_mon(monc, newmon);
+ struct ceph_client_mount *h;
dout(5, "request_umount from mon%d\n", mon);
- msg = ceph_msg_new(CEPH_MSG_CLIENT_UNMOUNT, 0, 0, 0, NULL);
+ msg = ceph_msg_new(CEPH_MSG_CLIENT_UNMOUNT, sizeof(*h), 0, 0, NULL);
if (IS_ERR(msg))
return;
+ h = msg->front.iov_base;
+ h->have_version = 0;
msg->hdr.dst = monc->monmap->mon_inst[mon];
ceph_msg_send(monc->client->msgr, msg, 0);
}
return PTR_ERR(msg);
req->request = msg;
h = msg->front.iov_base;
+ h->have_version = 0;
h->fsid = monc->monmap->fsid;
h->tid = cpu_to_le64(req->tid);
msg->hdr.dst = monc->monmap->mon_inst[mon];
int which;
struct dentry *root;
unsigned char r;
+ struct ceph_client_mount *h;
dout(10, "mount start\n");
mutex_lock(&client->mount_mutex);
dout(10, "mount sending mount request\n");
get_random_bytes(&r, 1);
which = r % client->mount_args.num_mon;
- mount_msg = ceph_msg_new(CEPH_MSG_CLIENT_MOUNT, 0, 0, 0, NULL);
+ mount_msg = ceph_msg_new(CEPH_MSG_CLIENT_MOUNT, sizeof(*h), 0,
+ 0, NULL);
if (IS_ERR(mount_msg)) {
err = PTR_ERR(mount_msg);
goto out;
}
+ h = mount_msg->front.iov_base;
+ h->have_version = 0;
mount_msg->hdr.dst.name.type =
cpu_to_le32(CEPH_ENTITY_TYPE_MON);
mount_msg->hdr.dst.name.num = cpu_to_le32(which);