summaryrefslogtreecommitdiff
path: root/extras/multipath/libdevmapper/ioctl/libdm-compat.h
diff options
context:
space:
mode:
authorchristophe.varoqui@free.fr <christophe.varoqui@free.fr>2003-12-07 08:44:59 -0800
committerGreg KH <gregkh@suse.de>2005-04-26 21:13:06 -0700
commit2bf80b67d1a64f1219bd366cee355e897596b2cf (patch)
tree4417e2d94c900bdeccc556db9ef89e42a7e102fe /extras/multipath/libdevmapper/ioctl/libdm-compat.h
parent83fa40fc2a9ad7790f4d1289c9e918d8e6ebe99d (diff)
[PATCH] extras/multipath update
here is the next update which brings this multipath to the state i'm not ashamed of it being in udev :) * drop a libdevmapper copy in extras/multipath; maybe discussions w/ Sistina folks will bring a better solution in the future. * drop a putchar usage in libdevmapper to compile cleanly with klibc * drop another such usage of my own in main.c * massage the Makefile to compile libdevmapper against klibc * use "ld" to produce the binary rather than "gcc -static" * stop being stupid w/ uneeded major, minor & dev in main.c:dm_mk_node() * reverse to creating striped target for now because the multipath target is more hairy than expected initialy * push the version code to 009 to be in synch w/ udev builds & run here. binary size is 43ko, which is fairly gratifying after all the efforts I've put to compiling it with klibc :)
Diffstat (limited to 'extras/multipath/libdevmapper/ioctl/libdm-compat.h')
-rw-r--r--extras/multipath/libdevmapper/ioctl/libdm-compat.h111
1 files changed, 111 insertions, 0 deletions
diff --git a/extras/multipath/libdevmapper/ioctl/libdm-compat.h b/extras/multipath/libdevmapper/ioctl/libdm-compat.h
new file mode 100644
index 0000000000..af7a9f1f71
--- /dev/null
+++ b/extras/multipath/libdevmapper/ioctl/libdm-compat.h
@@ -0,0 +1,111 @@
+/*
+ * Copyright (C) 2001 Sistina Software (UK) Limited.
+ *
+ * This file is released under the LGPL.
+ */
+
+#ifndef _LINUX_LIBDM_COMPAT_H
+#define _LINUX_LIBDM_COMPAT_H
+
+#include <inttypes.h>
+#include <linux/dm-ioctl.h>
+#include <linux/kdev_t.h>
+#include <sys/ioctl.h>
+
+struct dm_task;
+struct dm_info;
+
+/*
+ * Old versions of structures for backwards compatibility.
+ */
+
+struct dm_ioctl_v1 {
+ uint32_t version[3]; /* in/out */
+ uint32_t data_size; /* total size of data passed in
+ * including this struct */
+
+ uint32_t data_start; /* offset to start of data
+ * relative to start of this struct */
+
+ int32_t target_count; /* in/out */
+ int32_t open_count; /* out */
+ uint32_t flags; /* in/out */
+
+ __kernel_dev_t dev; /* in/out */
+
+ char name[DM_NAME_LEN]; /* device name */
+ char uuid[DM_UUID_LEN]; /* unique identifier for
+ * the block device */
+};
+
+struct dm_target_spec_v1 {
+ int32_t status; /* used when reading from kernel only */
+ uint64_t sector_start;
+ uint32_t length;
+ uint32_t next;
+
+ char target_type[DM_MAX_TYPE_NAME];
+
+};
+
+struct dm_target_deps_v1 {
+ uint32_t count;
+
+ __kernel_dev_t dev[0]; /* out */
+};
+
+enum {
+ /* Top level cmds */
+ DM_VERSION_CMD_V1 = 0,
+ DM_REMOVE_ALL_CMD_V1,
+
+ /* device level cmds */
+ DM_DEV_CREATE_CMD_V1,
+ DM_DEV_REMOVE_CMD_V1,
+ DM_DEV_RELOAD_CMD_V1,
+ DM_DEV_RENAME_CMD_V1,
+ DM_DEV_SUSPEND_CMD_V1,
+ DM_DEV_DEPS_CMD_V1,
+ DM_DEV_STATUS_CMD_V1,
+
+ /* target level cmds */
+ DM_TARGET_STATUS_CMD_V1,
+ DM_TARGET_WAIT_CMD_V1,
+};
+
+#define DM_VERSION_V1 _IOWR(DM_IOCTL, DM_VERSION_CMD_V1, struct dm_ioctl)
+#define DM_REMOVE_ALL_V1 _IOWR(DM_IOCTL, DM_REMOVE_ALL_CMD_V1, struct dm_ioctl)
+
+#define DM_DEV_CREATE_V1 _IOWR(DM_IOCTL, DM_DEV_CREATE_CMD_V1, struct dm_ioctl)
+#define DM_DEV_REMOVE_V1 _IOWR(DM_IOCTL, DM_DEV_REMOVE_CMD_V1, struct dm_ioctl)
+#define DM_DEV_RELOAD_V1 _IOWR(DM_IOCTL, DM_DEV_RELOAD_CMD_V1, struct dm_ioctl)
+#define DM_DEV_SUSPEND_V1 _IOWR(DM_IOCTL, DM_DEV_SUSPEND_CMD_V1, struct dm_ioctl)
+#define DM_DEV_RENAME_V1 _IOWR(DM_IOCTL, DM_DEV_RENAME_CMD_V1, struct dm_ioctl)
+#define DM_DEV_DEPS_V1 _IOWR(DM_IOCTL, DM_DEV_DEPS_CMD_V1, struct dm_ioctl)
+#define DM_DEV_STATUS_V1 _IOWR(DM_IOCTL, DM_DEV_STATUS_CMD_V1, struct dm_ioctl)
+
+#define DM_TARGET_STATUS_V1 _IOWR(DM_IOCTL, DM_TARGET_STATUS_CMD_V1, struct dm_ioctl)
+#define DM_TARGET_WAIT_V1 _IOWR(DM_IOCTL, DM_TARGET_WAIT_CMD_V1, struct dm_ioctl)
+
+/* *INDENT-OFF* */
+static struct cmd_data _cmd_data_v1[] = {
+ { "create", DM_DEV_CREATE_V1, {1, 0, 0} },
+ { "reload", DM_DEV_RELOAD_V1, {1, 0, 0} },
+ { "remove", DM_DEV_REMOVE_V1, {1, 0, 0} },
+ { "remove_all", DM_REMOVE_ALL_V1, {1, 0, 0} },
+ { "suspend", DM_DEV_SUSPEND_V1, {1, 0, 0} },
+ { "resume", DM_DEV_SUSPEND_V1, {1, 0, 0} },
+ { "info", DM_DEV_STATUS_V1, {1, 0, 0} },
+ { "deps", DM_DEV_DEPS_V1, {1, 0, 0} },
+ { "rename", DM_DEV_RENAME_V1, {1, 0, 0} },
+ { "version", DM_VERSION_V1, {1, 0, 0} },
+ { "status", DM_TARGET_STATUS_V1, {1, 0, 0} },
+ { "table", DM_TARGET_STATUS_V1, {1, 0, 0} },
+ { "waitevent", DM_TARGET_WAIT_V1, {1, 0, 0} },
+ { "names", 0, {4, 0, 0} },
+ { "clear", 0, {4, 0, 0} },
+ { "mknodes", 0, {4, 0, 0} },
+};
+/* *INDENT-ON* */
+
+#endif