ceph: fix endianness bug in frag_tree_split_cmp
sparse says:
fs/ceph/inode.c:308:36: warning: incorrect type in argument 1 (different base types)
fs/ceph/inode.c:308:36: expected unsigned int [unsigned] [usertype] a
fs/ceph/inode.c:308:36: got restricted __le32 [usertype] frag
fs/ceph/inode.c:308:46: warning: incorrect type in argument 2 (different base types)
fs/ceph/inode.c:308:46: expected unsigned int [unsigned] [usertype] b
fs/ceph/inode.c:308:46: got restricted __le32 [usertype] frag
We need to convert these values to host-endian before calling the
comparator.
Fixes: a407846ef7
("ceph: don't assume frag tree splits in mds reply are sorted")
Signed-off-by: Jeff Layton <jlayton@redhat.com>
Reviewed-by: Sage Weil <sage@redhat.com>
Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
This commit is contained in:
Родитель
1097680d75
Коммит
fe2ed42517
|
@ -305,7 +305,8 @@ static int frag_tree_split_cmp(const void *l, const void *r)
|
|||
{
|
||||
struct ceph_frag_tree_split *ls = (struct ceph_frag_tree_split*)l;
|
||||
struct ceph_frag_tree_split *rs = (struct ceph_frag_tree_split*)r;
|
||||
return ceph_frag_compare(ls->frag, rs->frag);
|
||||
return ceph_frag_compare(le32_to_cpu(ls->frag),
|
||||
le32_to_cpu(rs->frag));
|
||||
}
|
||||
|
||||
static bool is_frag_child(u32 f, struct ceph_inode_frag *frag)
|
||||
|
|
Загрузка…
Ссылка в новой задаче