Module Name: src
Committed By: tkusumi
Date: Mon Dec 23 16:17:36 UTC 2019
Modified Files:
src/sys/dev/dm: dm.h dm_ioctl.c dm_target.c dm_target_error.c
dm_target_zero.c
Log Message:
dm: Make target's ->table() optional
Since ->info() (counter part of ->table() in the original dm design
in Linux kernel in .status where both INFO and TABLE are optional)
is an optional handler, make ->table() optional as well. Some
targets don't have anything to do in ->table() just as in ->info().
taken-from: DragonFlyBSD
To generate a diff of this commit:
cvs rdiff -u -r1.51 -r1.52 src/sys/dev/dm/dm.h
cvs rdiff -u -r1.48 -r1.49 src/sys/dev/dm/dm_ioctl.c
cvs rdiff -u -r1.36 -r1.37 src/sys/dev/dm/dm_target.c
cvs rdiff -u -r1.27 -r1.28 src/sys/dev/dm/dm_target_error.c
cvs rdiff -u -r1.29 -r1.30 src/sys/dev/dm/dm_target_zero.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/dev/dm/dm.h
diff -u src/sys/dev/dm/dm.h:1.51 src/sys/dev/dm/dm.h:1.52
--- src/sys/dev/dm/dm.h:1.51 Sat Dec 21 16:00:29 2019
+++ src/sys/dev/dm/dm.h Mon Dec 23 16:17:35 2019
@@ -1,4 +1,4 @@
-/* $NetBSD: dm.h,v 1.51 2019/12/21 16:00:29 tkusumi Exp $ */
+/* $NetBSD: dm.h,v 1.52 2019/12/23 16:17:35 tkusumi Exp $ */
/*
* Copyright (c) 2008 The NetBSD Foundation, Inc.
@@ -181,19 +181,19 @@ typedef struct dm_target {
/* Destroy target_config area */
int (*destroy)(dm_table_entry_t *);
- /*
- * Info/table routine are called to get params string, which is target
- * specific. When dm_table_status_ioctl is called with flag
- * DM_STATUS_TABLE_FLAG I have to sent params string back.
- */
- char *(*table)(void *);
int (*strategy)(dm_table_entry_t *, struct buf *);
int (*upcall)(dm_table_entry_t *, struct buf *);
/*
* Optional routines.
*/
+ /*
+ * Info/table routine are called to get params string, which is target
+ * specific. When dm_table_status_ioctl is called with flag
+ * DM_STATUS_TABLE_FLAG I have to sent params string back.
+ */
char *(*info)(void *);
+ char *(*table)(void *);
int (*sync)(dm_table_entry_t *);
int (*secsize)(dm_table_entry_t *, unsigned int *);
@@ -262,14 +262,12 @@ int dm_target_stripe_secsize(dm_table_en
/* dm_target_error.c */
int dm_target_error_init(dm_table_entry_t*, int, char **);
-char *dm_target_error_table(void *);
int dm_target_error_strategy(dm_table_entry_t *, struct buf *);
int dm_target_error_destroy(dm_table_entry_t *);
int dm_target_error_upcall(dm_table_entry_t *, struct buf *);
/* dm_target_zero.c */
int dm_target_zero_init(dm_table_entry_t *, int, char **);
-char *dm_target_zero_table(void *);
int dm_target_zero_strategy(dm_table_entry_t *, struct buf *);
int dm_target_zero_destroy(dm_table_entry_t *);
int dm_target_zero_upcall(dm_table_entry_t *, struct buf *);
Index: src/sys/dev/dm/dm_ioctl.c
diff -u src/sys/dev/dm/dm_ioctl.c:1.48 src/sys/dev/dm/dm_ioctl.c:1.49
--- src/sys/dev/dm/dm_ioctl.c:1.48 Sat Dec 21 11:59:03 2019
+++ src/sys/dev/dm/dm_ioctl.c Mon Dec 23 16:17:35 2019
@@ -1,4 +1,4 @@
-/* $NetBSD: dm_ioctl.c,v 1.48 2019/12/21 11:59:03 tkusumi Exp $ */
+/* $NetBSD: dm_ioctl.c,v 1.49 2019/12/23 16:17:35 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_ioctl.c,v 1.48 2019/12/21 11:59:03 tkusumi Exp $");
+__KERNEL_RCSID(0, "$NetBSD: dm_ioctl.c,v 1.49 2019/12/23 16:17:35 tkusumi Exp $");
/*
* Locking is used to synchronise between ioctl calls and between dm_table's
@@ -936,6 +936,7 @@ dm_table_status_ioctl(prop_dictionary_t
SLIST_FOREACH(table_en, tbl, next) {
char *params;
+ int is_table;
target_dict = prop_dictionary_create();
aprint_debug("%016" PRIu64 ", length %016" PRIu64
@@ -960,10 +961,11 @@ dm_table_status_ioctl(prop_dictionary_t
*/
prop_dictionary_set_cstring(target_dict, DM_TABLE_PARAMS, "");
- if (flags & DM_STATUS_TABLE_FLAG)
+ is_table = (flags & DM_STATUS_TABLE_FLAG) ? 1 : 0;
+ if (is_table && table_en->target->table)
params = table_en->target->table(
table_en->target_config);
- else if (table_en->target->info)
+ else if (!is_table && table_en->target->info)
params = table_en->target->info(
table_en->target_config);
else
Index: src/sys/dev/dm/dm_target.c
diff -u src/sys/dev/dm/dm_target.c:1.36 src/sys/dev/dm/dm_target.c:1.37
--- src/sys/dev/dm/dm_target.c:1.36 Sat Dec 21 16:00:29 2019
+++ src/sys/dev/dm/dm_target.c Mon Dec 23 16:17:35 2019
@@ -1,4 +1,4 @@
-/* $NetBSD: dm_target.c,v 1.36 2019/12/21 16:00:29 tkusumi Exp $ */
+/* $NetBSD: dm_target.c,v 1.37 2019/12/23 16:17:35 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.c,v 1.36 2019/12/21 16:00:29 tkusumi Exp $");
+__KERNEL_RCSID(0, "$NetBSD: dm_target.c,v 1.37 2019/12/23 16:17:35 tkusumi Exp $");
#include <sys/types.h>
#include <sys/param.h>
@@ -160,10 +160,6 @@ dm_target_insert(dm_target_t *dm_target)
printf("%s missing init\n", dm_target->name);
return EINVAL;
}
- if (dm_target->table == NULL) {
- printf("%s missing table\n", dm_target->name);
- return EINVAL;
- }
if (dm_target->strategy == NULL) {
printf("%s missing strategy\n", dm_target->name);
return EINVAL;
@@ -346,7 +342,6 @@ dm_target_init(void)
dmt->version[1] = 0;
dmt->version[2] = 0;
dmt->init = &dm_target_error_init;
- dmt->table = &dm_target_error_table;
dmt->strategy = &dm_target_error_strategy;
dmt->destroy = &dm_target_error_destroy;
dmt->upcall = &dm_target_error_upcall;
@@ -358,7 +353,6 @@ dm_target_init(void)
dmt->version[1] = 0;
dmt->version[2] = 0;
dmt->init = &dm_target_zero_init;
- dmt->table = &dm_target_zero_table;
dmt->strategy = &dm_target_zero_strategy;
dmt->destroy = &dm_target_zero_destroy;
dmt->upcall = &dm_target_zero_upcall;
Index: src/sys/dev/dm/dm_target_error.c
diff -u src/sys/dev/dm/dm_target_error.c:1.27 src/sys/dev/dm/dm_target_error.c:1.28
--- src/sys/dev/dm/dm_target_error.c:1.27 Sat Dec 21 11:59:03 2019
+++ src/sys/dev/dm/dm_target_error.c Mon Dec 23 16:17:35 2019
@@ -1,4 +1,4 @@
-/* $NetBSD: dm_target_error.c,v 1.27 2019/12/21 11:59:03 tkusumi Exp $ */
+/* $NetBSD: dm_target_error.c,v 1.28 2019/12/23 16:17:35 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_error.c,v 1.27 2019/12/21 11:59:03 tkusumi Exp $");
+__KERNEL_RCSID(0, "$NetBSD: dm_target_error.c,v 1.28 2019/12/23 16:17:35 tkusumi Exp $");
/*
* This file implements initial version of device-mapper error target.
@@ -71,7 +71,6 @@ dm_target_error_modcmd(modcmd_t cmd, voi
dmt->version[1] = 0;
dmt->version[2] = 0;
dmt->init = &dm_target_error_init;
- dmt->table = &dm_target_error_table;
dmt->strategy = &dm_target_error_strategy;
dmt->destroy = &dm_target_error_destroy;
dmt->upcall = &dm_target_error_upcall;
@@ -112,14 +111,6 @@ dm_target_error_init(dm_table_entry_t *t
return 0;
}
-/* Table routine called to get params string. */
-char *
-dm_target_error_table(void *target_config)
-{
-
- return NULL;
-}
-
/* Strategy routine called from dm_strategy. */
int
dm_target_error_strategy(dm_table_entry_t *table_en, struct buf *bp)
Index: src/sys/dev/dm/dm_target_zero.c
diff -u src/sys/dev/dm/dm_target_zero.c:1.29 src/sys/dev/dm/dm_target_zero.c:1.30
--- src/sys/dev/dm/dm_target_zero.c:1.29 Sat Dec 21 11:59:03 2019
+++ src/sys/dev/dm/dm_target_zero.c Mon Dec 23 16:17:35 2019
@@ -1,4 +1,4 @@
-/* $NetBSD: dm_target_zero.c,v 1.29 2019/12/21 11:59:03 tkusumi Exp $ */
+/* $NetBSD: dm_target_zero.c,v 1.30 2019/12/23 16:17:35 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_zero.c,v 1.29 2019/12/21 11:59:03 tkusumi Exp $");
+__KERNEL_RCSID(0, "$NetBSD: dm_target_zero.c,v 1.30 2019/12/23 16:17:35 tkusumi Exp $");
/*
* This file implements initial version of device-mapper zero target.
@@ -71,7 +71,6 @@ dm_target_zero_modcmd(modcmd_t cmd, void
dmt->version[1] = 0;
dmt->version[2] = 0;
dmt->init = &dm_target_zero_init;
- dmt->table = &dm_target_zero_table;
dmt->strategy = &dm_target_zero_strategy;
dmt->destroy = &dm_target_zero_destroy;
dmt->upcall = &dm_target_zero_upcall;
@@ -115,14 +114,6 @@ dm_target_zero_init(dm_table_entry_t *ta
return 0;
}
-/* Table routine called to get params string. */
-char *
-dm_target_zero_table(void *target_config)
-{
-
- return NULL;
-}
-
/*
* This routine does IO operations.
*/