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

Commit 70edb55b authored by Sage Weil's avatar Sage Weil
Browse files

ceph: fix snaptrace decoding on cap migration between mds



This was simply broken.  Apparently at some point we thought about putting
the snaptrace in the middle section, but didn't.

Signed-off-by: default avatarSage Weil <sage@newdream.net>
parent c16e7869
Loading
Loading
Loading
Loading
+3 −2
Original line number Original line Diff line number Diff line
@@ -2608,6 +2608,7 @@ void ceph_handle_caps(struct ceph_mds_session *session,
	u64 size, max_size;
	u64 size, max_size;
	u64 tid;
	u64 tid;
	int check_caps = 0;
	int check_caps = 0;
	void *snaptrace;
	int r;
	int r;


	dout("handle_caps from mds%d\n", mds);
	dout("handle_caps from mds%d\n", mds);
@@ -2617,6 +2618,7 @@ void ceph_handle_caps(struct ceph_mds_session *session,
	if (msg->front.iov_len < sizeof(*h))
	if (msg->front.iov_len < sizeof(*h))
		goto bad;
		goto bad;
	h = msg->front.iov_base;
	h = msg->front.iov_base;
	snaptrace = h + 1;
	op = le32_to_cpu(h->op);
	op = le32_to_cpu(h->op);
	vino.ino = le64_to_cpu(h->ino);
	vino.ino = le64_to_cpu(h->ino);
	vino.snap = CEPH_NOSNAP;
	vino.snap = CEPH_NOSNAP;
@@ -2651,8 +2653,7 @@ void ceph_handle_caps(struct ceph_mds_session *session,


	case CEPH_CAP_OP_IMPORT:
	case CEPH_CAP_OP_IMPORT:
		handle_cap_import(mdsc, inode, h, session,
		handle_cap_import(mdsc, inode, h, session,
				  msg->middle,
				  snaptrace, le32_to_cpu(h->snap_trace_len));
				  le32_to_cpu(h->snap_trace_len));
		check_caps = 1; /* we may have sent a RELEASE to the old auth */
		check_caps = 1; /* we may have sent a RELEASE to the old auth */
		goto done;
		goto done;
	}
	}