summaryrefslogtreecommitdiff
path: root/sys/dev/dm/dm_target_snapshot.c
diff options
context:
space:
mode:
authortkusumi <tkusumi@NetBSD.org>2019-12-12 16:28:24 +0000
committertkusumi <tkusumi@NetBSD.org>2019-12-12 16:28:24 +0000
commitf4d889641c2e4ce572c3d1bf01581cc30cb8e537 (patch)
tree39c606b7b983b7019d1488f700e2382b023f2fad /sys/dev/dm/dm_target_snapshot.c
parent1a169b36b03c3b7135058de274a8a107e2e98b83 (diff)
dm: Make target's ->init() take parsed argc and argv
This gets rid of the same parser code in each target using strsep(3). taken-from: DragonFlyBSD
Diffstat (limited to 'sys/dev/dm/dm_target_snapshot.c')
-rw-r--r--sys/dev/dm/dm_target_snapshot.c32
1 files changed, 8 insertions, 24 deletions
diff --git a/sys/dev/dm/dm_target_snapshot.c b/sys/dev/dm/dm_target_snapshot.c
index 78770c14bf3..de49a6f1a86 100644
--- a/sys/dev/dm/dm_target_snapshot.c
+++ b/sys/dev/dm/dm_target_snapshot.c
@@ -1,4 +1,4 @@
-/* $NetBSD: dm_target_snapshot.c,v 1.29 2019/12/08 14:59:42 tkusumi Exp $ */
+/* $NetBSD: dm_target_snapshot.c,v 1.30 2019/12/12 16:28:24 tkusumi Exp $ */
/*
* Copyright (c) 2008 The NetBSD Foundation, Inc.
@@ -29,7 +29,7 @@
* POSSIBILITY OF SUCH DAMAGE.
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: dm_target_snapshot.c,v 1.29 2019/12/08 14:59:42 tkusumi Exp $");
+__KERNEL_RCSID(0, "$NetBSD: dm_target_snapshot.c,v 1.30 2019/12/12 16:28:24 tkusumi Exp $");
/*
* 1. Suspend my_data to temporarily stop any I/O while the snapshot is being
@@ -87,7 +87,7 @@ __KERNEL_RCSID(0, "$NetBSD: dm_target_snapshot.c,v 1.29 2019/12/08 14:59:42 tkus
#include "dm.h"
/* dm_target_snapshot.c */
-int dm_target_snapshot_init(dm_table_entry_t *, char *);
+int dm_target_snapshot_init(dm_table_entry_t *, int, char **);
char *dm_target_snapshot_status(void *);
int dm_target_snapshot_strategy(dm_table_entry_t *, struct buf *);
int dm_target_snapshot_sync(dm_table_entry_t *);
@@ -96,7 +96,7 @@ int dm_target_snapshot_destroy(dm_table_entry_t *);
int dm_target_snapshot_upcall(dm_table_entry_t *, struct buf *);
/* dm snapshot origin driver */
-int dm_target_snapshot_orig_init(dm_table_entry_t *, char *);
+int dm_target_snapshot_orig_init(dm_table_entry_t *, int, char **);
char *dm_target_snapshot_orig_status(void *);
int dm_target_snapshot_orig_strategy(dm_table_entry_t *, struct buf *);
int dm_target_snapshot_orig_sync(dm_table_entry_t *);
@@ -210,26 +210,13 @@ dm_target_snapshot_modcmd(modcmd_t cmd, void *arg)
* snapshot_origin device, cow device, persistent flag, chunk size
*/
int
-dm_target_snapshot_init(dm_table_entry_t *table_en, char *params)
+dm_target_snapshot_init(dm_table_entry_t *table_en, int argc, char **argv)
{
dm_target_snapshot_config_t *tsc;
dm_pdev_t *dmp_snap, *dmp_cow;
- char **ap, *argv[5];
dmp_cow = NULL;
- if (params == NULL)
- return EINVAL;
- /*
- * Parse a string, containing tokens delimited by white space,
- * into an argument vector
- */
- for (ap = argv; ap < &argv[4] &&
- (*ap = strsep(&params, " \t")) != NULL;) {
- if (**ap != '\0')
- ap++;
- }
-
printf("Snapshot target init function called!!\n");
printf("Snapshotted device: %s, cow device %s,\n\t persistent flag: %s, "
"chunk size: %s\n", argv[0], argv[1], argv[2], argv[3]);
@@ -409,19 +396,16 @@ dm_target_snapshot_upcall(dm_table_entry_t *table_en, struct buf *bp)
* argv: /dev/mapper/my_data_real
*/
int
-dm_target_snapshot_orig_init(dm_table_entry_t *table_en, char *params)
+dm_target_snapshot_orig_init(dm_table_entry_t *table_en, int argc, char **argv)
{
dm_target_snapshot_origin_config_t *tsoc;
dm_pdev_t *dmp_real;
- if (params == NULL)
- return EINVAL;
-
printf("Snapshot origin target init function called!!\n");
- printf("Parent device: %s\n", params);
+ printf("Parent device: %s\n", argv[0]);
/* Insert snap device to global pdev list */
- if ((dmp_real = dm_pdev_insert(params)) == NULL)
+ if ((dmp_real = dm_pdev_insert(argv[0])) == NULL)
return ENOENT;
tsoc = kmem_alloc(sizeof(dm_target_snapshot_origin_config_t), KM_SLEEP);