Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 95569713 authored by Yan, Zheng's avatar Yan, Zheng Committed by Ilya Dryomov
Browse files

ceph: new cap message flags indicate if there is pending capsnap



These flags tell mds if there is pending capsnap explicitly.
Without this explicit notification, mds can only conclude if
client has pending capsnap. The method mds use is inefficient
and error-prone.

Signed-off-by: default avatar"Yan, Zheng" <zyan@redhat.com>
Signed-off-by: default avatarIlya Dryomov <idryomov@gmail.com>
parent 3fb99d48
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -1248,7 +1248,10 @@ static int __send_cap(struct ceph_mds_client *mdsc, struct ceph_cap *cap,
	arg.mode = inode->i_mode;

	arg.inline_data = ci->i_inline_version != CEPH_INLINE_NONE;
	arg.flags = 0;
	if (list_empty(&ci->i_cap_snaps))
		arg.flags = CEPH_CLIENT_CAPS_NO_CAPSNAP;
	else
		arg.flags = CEPH_CLIENT_CAPS_PENDING_CAPSNAP;
	if (sync)
		arg.flags |= CEPH_CLIENT_CAPS_SYNC;

+3 −1
Original line number Diff line number Diff line
@@ -669,7 +669,9 @@ enum {
extern const char *ceph_cap_op_name(int op);

/* flags field in client cap messages (version >= 10) */
#define CEPH_CLIENT_CAPS_SYNC	(0x1)
#define CEPH_CLIENT_CAPS_SYNC			(1<<0)
#define CEPH_CLIENT_CAPS_NO_CAPSNAP		(1<<1)
#define CEPH_CLIENT_CAPS_PENDING_CAPSNAP	(1<<2);

/*
 * caps message, used for capability callbacks, acks, requests, etc.