mirror of
https://github.com/FEX-Emu/linux.git
synced 2024-12-15 05:11:32 +00:00
libceph: fix legacy layout decode with pool 0
If your data pool was pool 0, ceph_file_layout_from_legacy()
transform that to -1 unconditionally, which broke upgrades.
We only want do that for a fully zeroed ceph_file_layout,
so that it still maps to a file_layout_t. If any fields
are set, though, we trust the fl_pgpool to be a valid pool.
Fixes: 7627151ea3
("libceph: define new ceph_file_layout structure")
Link: http://tracker.ceph.com/issues/17825
Signed-off-by: Yan, Zheng <zyan@redhat.com>
Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
This commit is contained in:
parent
8a8d561766
commit
3890dce1d3
@ -34,7 +34,8 @@ void ceph_file_layout_from_legacy(struct ceph_file_layout *fl,
|
||||
fl->stripe_count = le32_to_cpu(legacy->fl_stripe_count);
|
||||
fl->object_size = le32_to_cpu(legacy->fl_object_size);
|
||||
fl->pool_id = le32_to_cpu(legacy->fl_pg_pool);
|
||||
if (fl->pool_id == 0)
|
||||
if (fl->pool_id == 0 && fl->stripe_unit == 0 &&
|
||||
fl->stripe_count == 0 && fl->object_size == 0)
|
||||
fl->pool_id = -1;
|
||||
}
|
||||
EXPORT_SYMBOL(ceph_file_layout_from_legacy);
|
||||
|
Loading…
Reference in New Issue
Block a user