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: Sage Weil <sage@newdream.net>
This commit is contained in:
parent
c16e786927
commit
70edb55bdf
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue