The commit is pushed to "branch-rh7-3.10.0-693.17.1.vz7.43.x-ovz" and will appear at https://src.openvz.org/scm/ovz/vzkernel.git after rh7-3.10.0-693.17.1.vz7.43.5 ------> commit b1000c102485989296264158dd54572789101bdd Author: Andrei Vagin <ava...@openvz.org> Date: Thu Feb 15 17:34:47 2018 +0300
ploop: allow to set discard granularity and alignment attributes Different backing stores can have different values for these parameters. Signed-off-by: Andrei Vagin <ava...@openvz.org> --- drivers/block/ploop/sysfs.c | 48 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/drivers/block/ploop/sysfs.c b/drivers/block/ploop/sysfs.c index acd18ff7a426..835558a29777 100644 --- a/drivers/block/ploop/sysfs.c +++ b/drivers/block/ploop/sysfs.c @@ -362,6 +362,51 @@ static int store_aborted(struct ploop_device * plo, u32 val) return 0; } +static u32 show_discard_granularity(struct ploop_device * plo) +{ + return plo->queue->limits.discard_granularity; +} + +static int store_discard_granularity(struct ploop_device * plo, u32 val) +{ + int q = ilog2(val); + + /* look at kaio_fill_zero_submit */ + if (1 << q != val || val > PAGE_SIZE || val < 512) + return -EINVAL; + + plo->queue->limits.discard_granularity = val; + return 0; +} + +static u32 show_discard_alignment(struct ploop_device * plo) +{ + return plo->queue->limits.discard_alignment; +} + +static int store_discard_alignment(struct ploop_device * plo, u32 val) +{ + int q = ilog2(val); + + /* look at kaio_fill_zero_submit */ + if (1 << q != val || val > PAGE_SIZE || val < 512) + return -EINVAL; + + plo->queue->limits.discard_alignment = val; + return 0; +} + +static u32 show_discard_zeroes_data(struct ploop_device * plo) +{ + return plo->queue->limits.discard_zeroes_data; +} + +static int store_discard_zeroes_data(struct ploop_device * plo, u32 val) +{ + plo->queue->limits.discard_zeroes_data = !!val; + return 0; +} + static u32 show_top(struct ploop_device * plo) { int top = -1; @@ -550,6 +595,9 @@ static struct attribute *state_attributes[] = { _A(blockable_reqs), _A(blocked_bios), _A(freeze_state), + _A2(discard_granularity), + _A2(discard_alignment), + _A2(discard_zeroes_data), NULL }; _______________________________________________ Devel mailing list Devel@openvz.org https://lists.openvz.org/mailman/listinfo/devel