The commit is pushed to "branch-rh8-4.18.0-305.3.1.vz8.7.x-ovz" and will appear at https://src.openvz.org/scm/ovz/vzkernel.git after rh8-4.18.0-305.3.1.vz8.7.15 ------> commit 3d95fbc62580f9020870d327d7518a09fe7c3237 Author: Kirill Tkhai <ktk...@virtuozzo.com> Date: Thu Sep 30 22:08:14 2021 +0300
dm-tracking: Add tracking_clear cmd Command to ACK ordered copied cluster. Signed-off-by: Kirill Tkhai <ktk...@virtuozzo.com> --- drivers/md/dm-tracking.c | 31 +++++++++++++++++++++++++++---- 1 file changed, 27 insertions(+), 4 deletions(-) diff --git a/drivers/md/dm-tracking.c b/drivers/md/dm-tracking.c index c49e79cf1514..ef1662ffac2e 100644 --- a/drivers/md/dm-tracking.c +++ b/drivers/md/dm-tracking.c @@ -170,6 +170,14 @@ static void dmt_dtr(struct dm_target *ti) dmt_destroy(ti->private); } +static int tracking_clear(struct dm_tracking *dmt, u64 clu) +{ + spin_lock_irq(&dmt->lock); + clear_bit(clu, dmt->bitmap); + spin_unlock_irq(&dmt->lock); + return 0; +} + static int tracking_get_next(struct dm_tracking *dmt, char *result, unsigned int maxlen) { @@ -199,10 +207,24 @@ static int tracking_get_next(struct dm_tracking *dmt, char *result, } static int dmt_cmd(struct dm_tracking *dmt, const char *suffix, + int argc, char *argv[], char *result, unsigned int maxlen) { unsigned int nr_clus, size; void *bitmap = NULL; + u64 val; + + if (!strcmp(suffix, "clear")) { + if (argc != 1 || kstrtou64(argv[0], 10, &val) < 0 || + val >= dmt->nr_clus) + return -EINVAL; + if (!dmt->bitmap) + return -ENOENT; + return tracking_clear(dmt, val); + } + + if (argc != 0) + return -EINVAL; if (!strcmp(suffix, "get_next")) { if (!dmt->bitmap) @@ -252,13 +274,14 @@ static int dmt_message(struct dm_target *ti, unsigned int argc, char **argv, return -EPERM; mutex_lock(&dmt->ctl_mutex); + ret = -EINVAL; + if (argc < 1) + goto unlock; ret = -ENOTSUPP; if (strncmp(argv[0], "tracking_", 9)) goto unlock; - ret = -EINVAL; - if (argc != 1) - goto unlock; - ret = dmt_cmd(dmt, argv[0] + 9, result, maxlen); + ret = dmt_cmd(dmt, argv[0] + 9, argc - 1, + &argv[1], result, maxlen); unlock: mutex_unlock(&dmt->ctl_mutex); _______________________________________________ Devel mailing list Devel@openvz.org https://lists.openvz.org/mailman/listinfo/devel