---
 tests/.gitignore      |    1 +
 tests/Makefile.am     |    2 +
 tests/ioctl_dm-v.c    |    2 +
 tests/ioctl_dm-v.test |   12 ++++
 tests/ioctl_dm.c      |  178 +++++++++++++++++++++++++++++++++++++++----------
 tests/ioctl_dm.test   |    2 +-
 6 files changed, 160 insertions(+), 37 deletions(-)
 create mode 100644 tests/ioctl_dm-v.c
 create mode 100755 tests/ioctl_dm-v.test

diff --git a/tests/.gitignore b/tests/.gitignore
index 9045117..b2c5434 100644
--- a/tests/.gitignore
+++ b/tests/.gitignore
@@ -104,6 +104,7 @@ inet-cmsg
 ioctl
 ioctl_block
 ioctl_dm
+ioctl_dm-v
 ioctl_evdev
 ioctl_evdev-v
 ioctl_mtd
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 2405415..61b6db7 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -164,6 +164,7 @@ check_PROGRAMS = \
        ioctl \
        ioctl_block \
        ioctl_dm \
+       ioctl_dm-v \
        ioctl_evdev \
        ioctl_evdev-v \
        ioctl_mtd \
@@ -513,6 +514,7 @@ DECODER_TESTS = \
        ioctl.test \
        ioctl_block.test \
        ioctl_dm.test \
+       ioctl_dm-v.test \
        ioctl_evdev.test \
        ioctl_evdev-v.test \
        ioctl_mtd.test \
diff --git a/tests/ioctl_dm-v.c b/tests/ioctl_dm-v.c
new file mode 100644
index 0000000..d95058f
--- /dev/null
+++ b/tests/ioctl_dm-v.c
@@ -0,0 +1,2 @@
+#define VERBOSE 1
+#include "ioctl_dm.c"
diff --git a/tests/ioctl_dm-v.test b/tests/ioctl_dm-v.test
new file mode 100755
index 0000000..4f6d64c
--- /dev/null
+++ b/tests/ioctl_dm-v.test
@@ -0,0 +1,12 @@
+#!/bin/sh
+
+# Check abbreviated decoding of DM* ioctls.
+
+. "${srcdir=.}/init.sh"
+
+run_prog > /dev/null
+run_strace -a16 -s9 -veioctl $args > "$EXP"
+check_prog grep
+grep -v '^ioctl([012],' < "$LOG" > "$OUT"
+match_diff "$OUT" "$EXP"
+rm -f "$EXP" "$OUT"
diff --git a/tests/ioctl_dm.c b/tests/ioctl_dm.c
index 0b2c5a7..2fcd430 100644
--- a/tests/ioctl_dm.c
+++ b/tests/ioctl_dm.c
@@ -11,6 +11,10 @@
 # include <sys/ioctl.h>
 # include <linux/dm-ioctl.h>
 
+# ifndef VERBOSE
+#  define VERBOSE 0
+# endif
+
 # define STR32 "AbCdEfGhIjKlMnOpQrStUvWxYz012345"
 
 static const char str129[] = STR32 STR32 STR32 STR32 "6";
@@ -102,6 +106,7 @@ init_dm_target_spec(struct dm_target_spec *ptr, uint32_t id)
                ptr->target_type[id % (sizeof(ptr->target_type) + 1)] = '\0';
 }
 
+# if VERBOSE
 static void
 print_dm_target_spec(struct dm_target_spec *ptr, uint32_t id)
 {
@@ -112,6 +117,7 @@ print_dm_target_spec(struct dm_target_spec *ptr, uint32_t 
id)
               (int) (id % (sizeof(ptr->target_type) + 1)),
               str129 + id % (sizeof(str129) - sizeof(ptr->target_type)));
 }
+# endif /* VERBOSE */
 
 # define ARG_STR(_arg) (_arg), #_arg
 
@@ -303,9 +309,14 @@ main(void)
        printf("ioctl(-1, DM_TABLE_LOAD, "
               "{version=4.1.2, data_size=%u, data_start=%u, "
               "dev=makedev(18, 52), name=\"nnn\", uuid=\"uuu\", "
-              "target_count=1, flags=0, {sector_start=16, "
-              "length=32, target_type=\"tgt\", string=\"tparams\"}}) = "
-              "-1 EBADF (%m)\n", s.ioc.data_size, s.ioc.data_start);
+              "target_count=1, flags=0, "
+# if VERBOSE
+              "{sector_start=16, length=32, target_type=\"tgt\", "
+              "string=\"tparams\"}"
+# else /* !VERBOSE */
+              "..."
+# endif /* VERBOSE */
+              "}) = -1 EBADF (%m)\n", s.ioc.data_size, s.ioc.data_start);
 
        /* No targets */
        init_s(dm_arg, sizeof(*dm_arg) - sizeof(dm_arg->data),
@@ -328,8 +339,12 @@ main(void)
               "{version=4.1.2, data_size=%zu, data_start=%u, "
               "dev=makedev(18, 52), name=\"nnn\", uuid=\"uuu\", "
               "target_count=1234, flags=0, "
-              "/* misplaced struct dm_target_spec */ ...}) = -1 EBADF (%m)\n",
-              sizeof(*dm_arg), 0xfffffff8);
+# if VERBOSE
+              "/* misplaced struct dm_target_spec */ ..."
+# else /* !VERBOSE */
+              "..."
+# endif /* VERBOSE */
+              "}) = -1 EBADF (%m)\n", sizeof(*dm_arg), 0xfffffff8);
 
        /* Inaccessible pointer */
        init_s(&dm_arg_open1->ioc, offsetof(struct dm_table_open_test, target1),
@@ -340,11 +355,19 @@ main(void)
        printf("ioctl(-1, DM_TABLE_LOAD, "
               "{version=4.1.2, data_size=%zu, data_start=%zu, "
               "dev=makedev(18, 52), name=\"nnn\", uuid=\"uuu\", "
-              "target_count=3735936673, flags=0, %p}) = -1 EBADF (%m)\n",
-              sizeof(*dm_arg_open1),
-              offsetof(struct dm_table_open_test, target1),
-              (char *) dm_arg_open1 +
-              offsetof(struct dm_table_open_test, target1));
+              "target_count=3735936673, flags=0, "
+# if VERBOSE
+              "%p"
+# else /* !VERBOSE */
+              "..."
+# endif /* VERBOSE */
+              "}) = -1 EBADF (%m)\n", sizeof(*dm_arg_open1),
+              offsetof(struct dm_table_open_test, target1)
+# if VERBOSE
+              , (char *) dm_arg_open1 +
+              offsetof(struct dm_table_open_test, target1)
+# endif /* VERBOSE */
+              );
 
        /* Inaccessible string */
        init_s(&dm_arg_open2->ioc, offsetof(struct dm_table_open_test, param1),
@@ -363,13 +386,18 @@ main(void)
               "target_count=2, flags=0, ",
               sizeof(*dm_arg_open2),
               offsetof(struct dm_table_open_test, target1));
+# if VERBOSE
        print_dm_target_spec(&dm_arg_open2->target1, 7);
-       errno = saved_errno;
-       printf("%p}, %p}) = -1 EBADF (%m)\n",
+       printf("%p}, %p",
               (char *) dm_arg_open2 +
               offsetof(struct dm_table_open_test, param1),
               (char *) dm_arg_open2 +
               offsetof(struct dm_table_open_test, target3));
+# else /* !VERBOSE */
+       printf("...");
+# endif /* VERBOSE */
+       errno = saved_errno;
+       printf("}) = -1 EBADF (%m)\n");
 
        /* Incorrect next */
        init_s(&dm_arg_open3->ioc, offsetof(struct dm_table_open_test, target5),
@@ -403,14 +431,19 @@ main(void)
               "target_count=4, flags=0, ",
               offsetof(struct dm_table_open_test, target5),
               offsetof(struct dm_table_open_test, target0));
+# if VERBOSE
        print_dm_target_spec(&dm_arg_open3->target0, 9);
        printf("\"\"}, ");
        print_dm_target_spec(&dm_arg_open3->target1, 15);
        printf("\"\\377\"}, ");
        print_dm_target_spec(&dm_arg_open3->target1, 42);
        errno = saved_errno;
-       printf("\"\\1\\2\"}, /* misplaced struct dm_target_spec */ ...}) = "
-              "-1 EBADF (%m)\n");
+       printf("\"\\1\\2\"}, /* misplaced struct dm_target_spec */ ...");
+# else /* !VERBOSE */
+       printf("...");
+# endif /* VERBOSE */
+       errno = saved_errno;
+       printf("}) = -1 EBADF (%m)\n");
 
        #define FILL_DM_TARGET(id, id_next) \
                do { \
@@ -451,6 +484,7 @@ main(void)
               "target_count=3134983661, flags=0, ",
               sizeof(*dm_arg_open3),
               offsetof(struct dm_table_open_test, target0));
+# if VERBOSE
        PRINT_DM_TARGET(0);
        PRINT_DM_TARGET(1);
        PRINT_DM_TARGET(2);
@@ -460,6 +494,7 @@ main(void)
        PRINT_DM_TARGET(6);
        PRINT_DM_TARGET(7);
        PRINT_DM_TARGET(8);
+# endif /* VERBOSE */
        errno = saved_errno;
        printf("...}) = -1 EBADF (%m)\n");
 
@@ -473,7 +508,12 @@ main(void)
        printf("ioctl(-1, DM_TARGET_MSG, "
               "{version=4.1.2, data_size=%u, data_start=%u, "
               "dev=makedev(18, 52), name=\"nnn\", uuid=\"uuu\", flags=0, "
-              "{sector=4660, message=\"long targ\"...}}) = -1 EBADF (%m)\n",
+# if VERBOSE
+              "{sector=4660, message=\"long targ\"...}"
+# else /* !VERBOSE */
+              "..."
+# endif /* VERBOSE */
+              "}) = -1 EBADF (%m)\n",
               s.ioc.data_size, s.ioc.data_start);
 
        /* Invalid data_start */
@@ -484,7 +524,12 @@ main(void)
        printf("ioctl(-1, DM_TARGET_MSG, "
               "{version=4.1.2, data_size=%zu, data_start=%zu, "
               "dev=makedev(18, 52), name=\"nnn\", uuid=\"uuu\", flags=0, "
-              "/* misplaced struct dm_target_msg */}) = -1 EBADF (%m)\n",
+# if VERBOSE
+              "/* misplaced struct dm_target_msg */"
+# else /* !VERBOSE */
+              "..."
+# endif /* VERBOSE */
+              "}) = -1 EBADF (%m)\n",
               sizeof(*dm_arg), sizeof(*dm_arg) - sizeof(dm_arg->data));
 
        /* Invalid data_start */
@@ -494,7 +539,12 @@ main(void)
        printf("ioctl(-1, DM_TARGET_MSG, "
               "{version=4.1.2, data_size=%zu, data_start=%u, "
               "dev=makedev(18, 52), name=\"nnn\", uuid=\"uuu\", flags=0, "
-              "/* misplaced struct dm_target_msg */}) = -1 EBADF (%m)\n",
+# if VERBOSE
+              "/* misplaced struct dm_target_msg */"
+# else /* !VERBOSE */
+              "..."
+# endif /* VERBOSE */
+              "}) = -1 EBADF (%m)\n",
               sizeof(*dm_arg), 0xffffffff);
 
        /* Inaccessible pointer */
@@ -504,10 +554,19 @@ main(void)
        ioctl(-1, DM_TARGET_MSG, dm_arg);
        printf("ioctl(-1, DM_TARGET_MSG, "
               "{version=4.1.2, data_size=%zu, data_start=%zu, "
-              "dev=makedev(18, 52), name=\"nnn\", uuid=\"uuu\", flags=0, %p}) "
-              "= -1 EBADF (%m)\n",
+              "dev=makedev(18, 52), name=\"nnn\", uuid=\"uuu\", flags=0, "
+# if VERBOSE
+              "%p"
+# else /* !VERBOSE */
+              "..."
+# endif /* VERBOSE */
+              "}) = -1 EBADF (%m)\n",
               sizeof(*dm_arg) + sizeof(struct dm_target_msg),
-              sizeof(*dm_arg), (char *) dm_arg + sizeof(*dm_arg));
+              sizeof(*dm_arg)
+# if VERBOSE
+              , (char *) dm_arg + sizeof(*dm_arg)
+# endif /* VERBOSE */
+              );
 
        /* Inaccessible string */
        init_s(&dm_arg_msg->ioc, sizeof(*dm_arg_msg),
@@ -515,29 +574,41 @@ main(void)
        dm_arg_msg->ioc.data_size = sizeof(*dm_arg_msg) + 1;
        dm_arg_msg->msg.sector = (__u64) 0xdeadbeeffacef157ULL;
        ioctl(-1, DM_TARGET_MSG, dm_arg_msg);
+       saved_errno = errno;
        printf("ioctl(-1, DM_TARGET_MSG, "
               "{version=4.1.2, data_size=%zu, data_start=%zu, "
-              "dev=makedev(18, 52), name=\"nnn\", uuid=\"uuu\", flags=0, "
-              "{sector=%" PRI__u64 ", message=%p}}) "
-              "= -1 EBADF (%m)\n",
+              "dev=makedev(18, 52), name=\"nnn\", uuid=\"uuu\", flags=0, ",
               sizeof(*dm_arg_msg) + 1,
-              offsetof(struct dm_target_msg_test, msg),
+              offsetof(struct dm_target_msg_test, msg));
+# if VERBOSE
+       printf("{sector=%" PRI__u64 ", message=%p}",
               (__u64) 0xdeadbeeffacef157ULL,
               (char *) dm_arg_msg +
               offsetof(struct dm_target_msg_test, msg.message));
+# else /* !VERBOSE */
+       printf("...");
+# endif /* VERBOSE */
+       errno = saved_errno;
+       printf("}) = -1 EBADF (%m)\n");
 
        /* Zero-sied string */
        init_s(&dm_arg_msg->ioc, sizeof(*dm_arg_msg),
                offsetof(struct dm_target_msg_test, msg));
        dm_arg_msg->msg.sector = (__u64) 0xdeadbeeffacef157ULL;
        ioctl(-1, DM_TARGET_MSG, dm_arg_msg);
+       saved_errno = errno;
        printf("ioctl(-1, DM_TARGET_MSG, "
               "{version=4.1.2, data_size=%zu, data_start=%zu, "
-              "dev=makedev(18, 52), name=\"nnn\", uuid=\"uuu\", flags=0, "
-              "{sector=%" PRI__u64 ", message=\"\"}}) "
-              "= -1 EBADF (%m)\n",
-              sizeof(*dm_arg_msg), offsetof(struct dm_target_msg_test, msg),
+              "dev=makedev(18, 52), name=\"nnn\", uuid=\"uuu\", flags=0, ",
+              sizeof(*dm_arg_msg), offsetof(struct dm_target_msg_test, msg));
+# if VERBOSE
+       printf("{sector=%" PRI__u64 ", message=\"\"}",
               (__u64) 0xdeadbeeffacef157ULL);
+# else /* !VERBOSE */
+       printf("...");
+# endif /* VERBOSE */
+       errno = saved_errno;
+       printf("}) = -1 EBADF (%m)\n");
 
 
        /* DM_DEV_SET_GEOMETRY */
@@ -547,7 +618,12 @@ main(void)
        printf("ioctl(-1, DM_DEV_SET_GEOMETRY, "
               "{version=4.1.2, data_size=%u, data_start=%u, "
               "dev=makedev(18, 52), name=\"nnn\", uuid=\"uuu\", flags=0, "
-              "string=\"10 20 30 \"...}) = -1 EBADF (%m)\n",
+# if VERBOSE
+              "string=\"10 20 30 \"..."
+# else /* !VERBOSE */
+              "..."
+# endif /* VERBOSE */
+              "}) = -1 EBADF (%m)\n",
               s.ioc.data_size, s.ioc.data_start);
 
 
@@ -560,9 +636,18 @@ main(void)
        printf("ioctl(-1, DM_DEV_RENAME, "
               "{version=4.1.2, data_size=%zu, data_start=%zu, "
               "dev=makedev(18, 52), name=\"nnn\", uuid=\"uuu\", event_nr=0, "
-              "flags=0, string=%p}) = -1 EBADF (%m)\n",
-              sizeof(*dm_arg), sizeof(*dm_arg) - sizeof(dm_arg->data),
-              (char *) dm_arg + sizeof(*dm_arg) - sizeof(dm_arg->data));
+              "flags=0, "
+# if VERBOSE
+              "string=%p"
+# else /* !VERBOSE */
+              "..."
+# endif /* VERBOSE */
+              "}) = -1 EBADF (%m)\n",
+              sizeof(*dm_arg), sizeof(*dm_arg) - sizeof(dm_arg->data)
+# if VERBOSE
+              , (char *) dm_arg + sizeof(*dm_arg) - sizeof(dm_arg->data)
+# endif /* VERBOSE */
+              );
 
        /* Incorrect data_start data */
        init_s(&s.ioc, sizeof(s), offsetof(struct s, u));
@@ -571,7 +656,13 @@ main(void)
        printf("ioctl(-1, DM_DEV_RENAME, "
               "{version=4.1.2, data_size=%u, data_start=3735928559, "
               "dev=makedev(18, 52), name=\"nnn\", uuid=\"uuu\", event_nr=0, "
-              "flags=0, /* misplaced string */}) = -1 EBADF (%m)\n",
+              "flags=0, "
+# if VERBOSE
+              "/* misplaced string */"
+# else /* !VERBOSE */
+              "..."
+# endif /* VERBOSE */
+              "}) = -1 EBADF (%m)\n",
               s.ioc.data_size);
 
        /* Strange but still valid data_start */
@@ -582,7 +673,13 @@ main(void)
        printf("ioctl(-1, DM_DEV_RENAME, "
               "{version=4.1.2, data_size=%u, data_start=%zu, "
               "dev=makedev(18, 52), name=\"nnn\", uuid=\"uuu\", event_nr=0, "
-              "flags=0, string=\"nn\"}) = -1 EBADF (%m)\n",
+              "flags=0, "
+# if VERBOSE
+              "string=\"nn\""
+# else /* !VERBOSE */
+              "..."
+# endif /* VERBOSE */
+              "}) = -1 EBADF (%m)\n",
               s.ioc.data_size,
               offsetof(struct dm_ioctl, name) + 1);
 
@@ -593,7 +690,13 @@ main(void)
        printf("ioctl(-1, DM_DEV_RENAME, "
               "{version=4.1.2, data_size=%u, data_start=%u, "
               "dev=makedev(18, 52), name=\"nnn\", uuid=\"uuu\", event_nr=0, "
-              "flags=0, string=\"new long \"...}) = -1 EBADF (%m)\n",
+              "flags=0, "
+# if VERBOSE
+              "string=\"new long \"..."
+# else /* !VERBOSE */
+              "..."
+# endif /* VERBOSE */
+              "}) = -1 EBADF (%m)\n",
               s.ioc.data_size, s.ioc.data_start);
 
 
@@ -605,8 +708,11 @@ main(void)
               "{version=4.1.2, data_size=%u, data_start=%u, "
               "dev=makedev(18, 52), name=\"nnn\", uuid=\"uuu\", "
               "target_count=4294967295, flags=0, "
+# if VERBOSE
               "{sector_start=0, length=0, target_type=\"\", string=\"\"}, "
-              "/* misplaced struct dm_target_spec */ ...}) = -1 EBADF (%m)\n",
+              "/* misplaced struct dm_target_spec */ "
+# endif /* VERBOSE */
+              "...}) = -1 EBADF (%m)\n",
               s.ioc.data_size, s.ioc.data_start);
 
        puts("+++ exited with 0 +++");
diff --git a/tests/ioctl_dm.test b/tests/ioctl_dm.test
index 78866d3..6485205 100755
--- a/tests/ioctl_dm.test
+++ b/tests/ioctl_dm.test
@@ -5,7 +5,7 @@
 . "${srcdir=.}/init.sh"
 
 run_prog > /dev/null
-run_strace -a16 -s9 -veioctl $args > "$EXP"
+run_strace -a16 -s9 -eioctl $args > "$EXP"
 check_prog grep
 grep -v '^ioctl([012],' < "$LOG" > "$OUT"
 match_diff "$OUT" "$EXP"
-- 
1.7.10.4

--
dm-devel mailing list
dm-devel@redhat.com
https://www.redhat.com/mailman/listinfo/dm-devel

Reply via email to