Hi Sage, Today's linux-next merge of the ceph tree got a conflict in fs/ceph/mds_client.c between commit 25933abdd8c562182ca6dc9f8c4c2cc8265c3a80 ("ceph: Handle file locks in replies from the MDS") from Linus' tree and commit cba1a66d511d46c426ea02c322293b48f3b88cf2 ("ceph: implement DIRLAYOUTHASH feature to get dir layout from MDS") from the ceph tree. I fixed it up (hopefully correctly, see below) and can carry this fix as necessary. -- Cheers, Stephen Rothwell sfr@xxxxxxxxxxxxxxxx diff --cc fs/ceph/mds_client.c index 38800ea,bb9ff98..0000000 --- a/fs/ceph/mds_client.c +++ b/fs/ceph/mds_client.c @@@ -202,38 -212,6 +211,38 @@@ out_bad } /* + * parse fcntl F_GETLK results + */ +static int parse_reply_info_filelock(void **p, void *end, + struct ceph_mds_reply_info_parsed *info) +{ + if (*p + sizeof(*info->filelock_reply) > end) + goto bad; + + info->filelock_reply = *p; + *p += sizeof(*info->filelock_reply); + + if (unlikely(*p != end)) + goto bad; + return 0; + +bad: + return -EIO; +} + +/* + * parse extra results + */ +static int parse_reply_info_extra(void **p, void *end, - struct ceph_mds_reply_info_parsed *info) ++ struct ceph_mds_reply_info_parsed *info, int features) +{ + if (info->head->op == CEPH_MDS_OP_GETFILELOCK) + return parse_reply_info_filelock(p, end, info); + else - return parse_reply_info_dir(p, end, info); ++ return parse_reply_info_dir(p, end, info, features); +} + +/* * parse entire mds reply */ static int parse_reply_info(struct ceph_msg *msg, @@@ -255,10 -234,10 +265,10 @@@ goto out_bad; } - /* dir content */ + /* extra */ ceph_decode_32_safe(&p, end, len, bad); if (len > 0) { - err = parse_reply_info_extra(&p, p+len, info); - err = parse_reply_info_dir(&p, p+len, info, features); ++ err = parse_reply_info_extra(&p, p+len, info, features); if (err < 0) goto out_bad; } -- To unsubscribe from this list: send the line "unsubscribe linux-next" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html