mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-11-24 08:10:54 +07:00
ceph: fully initialize new layout
When we are setting a new layout, fully initialize the structure: - zero it out - always set preferred_osd to -1 Signed-off-by: Sage Weil <sage@inktank.com> Reviewed-by: Alex Elder <elder@inktank.com>
This commit is contained in:
parent
fd51653f78
commit
702aeb1f88
@ -80,22 +80,29 @@ static long ceph_ioctl_set_layout(struct file *file, void __user *arg)
|
|||||||
|
|
||||||
/* validate changed params against current layout */
|
/* validate changed params against current layout */
|
||||||
err = ceph_do_getattr(file->f_dentry->d_inode, CEPH_STAT_CAP_LAYOUT);
|
err = ceph_do_getattr(file->f_dentry->d_inode, CEPH_STAT_CAP_LAYOUT);
|
||||||
if (!err) {
|
if (err)
|
||||||
nl.stripe_unit = ceph_file_layout_su(ci->i_layout);
|
|
||||||
nl.stripe_count = ceph_file_layout_stripe_count(ci->i_layout);
|
|
||||||
nl.object_size = ceph_file_layout_object_size(ci->i_layout);
|
|
||||||
nl.data_pool = le32_to_cpu(ci->i_layout.fl_pg_pool);
|
|
||||||
} else
|
|
||||||
return err;
|
return err;
|
||||||
|
|
||||||
|
memset(&nl, 0, sizeof(nl));
|
||||||
if (l.stripe_count)
|
if (l.stripe_count)
|
||||||
nl.stripe_count = l.stripe_count;
|
nl.stripe_count = l.stripe_count;
|
||||||
|
else
|
||||||
|
nl.stripe_count = ceph_file_layout_stripe_count(ci->i_layout);
|
||||||
if (l.stripe_unit)
|
if (l.stripe_unit)
|
||||||
nl.stripe_unit = l.stripe_unit;
|
nl.stripe_unit = l.stripe_unit;
|
||||||
|
else
|
||||||
|
nl.stripe_unit = ceph_file_layout_su(ci->i_layout);
|
||||||
if (l.object_size)
|
if (l.object_size)
|
||||||
nl.object_size = l.object_size;
|
nl.object_size = l.object_size;
|
||||||
|
else
|
||||||
|
nl.object_size = ceph_file_layout_object_size(ci->i_layout);
|
||||||
if (l.data_pool)
|
if (l.data_pool)
|
||||||
nl.data_pool = l.data_pool;
|
nl.data_pool = l.data_pool;
|
||||||
|
else
|
||||||
|
nl.data_pool = ceph_file_layout_pg_pool(ci->i_layout);
|
||||||
|
|
||||||
|
/* this is obsolete, and always -1 */
|
||||||
|
nl.preferred_osd = le64_to_cpu(-1);
|
||||||
|
|
||||||
err = __validate_layout(mdsc, &nl);
|
err = __validate_layout(mdsc, &nl);
|
||||||
if (err)
|
if (err)
|
||||||
|
@ -34,6 +34,8 @@
|
|||||||
struct ceph_ioctl_layout {
|
struct ceph_ioctl_layout {
|
||||||
__u64 stripe_unit, stripe_count, object_size;
|
__u64 stripe_unit, stripe_count, object_size;
|
||||||
__u64 data_pool;
|
__u64 data_pool;
|
||||||
|
|
||||||
|
/* obsolete. new values ignored, always return -1 */
|
||||||
__s64 preferred_osd;
|
__s64 preferred_osd;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user