Loading Documentation/device-mapper/boot.txt 0 → 100644 +42 −0 Original line number Diff line number Diff line Boot time creation of mapped devices =================================== It is possible to configure a device mapper device to act as the root device for your system in two ways. The first is to build an initial ramdisk which boots to a minimal userspace which configures the device, then pivot_root(8) in to it. For simple device mapper configurations, it is possible to boot directly using the following kernel command line: dm="<name> <uuid> <ro>,table line 1,...,table line n" name = the name to associate with the device after boot, udev, if used, will use that name to label the device node. uuid = may be 'none' or the UUID desired for the device. ro = may be "ro" or "rw". If "ro", the device and device table will be marked read-only. Each table line may be as normal when using the dmsetup tool except for two variations: 1. Any use of commas will be interpreted as a newline 2. Quotation marks cannot be escaped and cannot be used without terminating the dm= argument. Unless renamed by udev, the device node created will be dm-0 as the first minor number for the device-mapper is used during early creation. Example ======= - Booting to a linear array made up of user-mode linux block devices: dm="lroot none 0, 0 4096 linear 98:16 0, 4096 4096 linear 98:32 0" \ root=/dev/dm-0 Will boot to a rw dm-linear target of 8192 sectors split across two block devices identified by their major:minor numbers. After boot, udev will rename this target to /dev/mapper/lroot (depending on the rules). No uuid was assigned. Documentation/kernel-parameters.txt +4 −0 Original line number Diff line number Diff line Loading @@ -56,6 +56,7 @@ parameter is applicable: BLACKFIN Blackfin architecture is enabled. CLK Common clock infrastructure is enabled. CMA Contiguous Memory Area support is enabled. DM Device mapper support is enabled. DRM Direct Rendering Management support is enabled. DYNAMIC_DEBUG Build in debug messages and enable them at runtime EDD BIOS Enhanced Disk Drive Services (EDD) is enabled Loading Loading @@ -919,6 +920,9 @@ bytes respectively. Such letter suffixes can also be entirely omitted. dis_ucode_ldr [X86] Disable the microcode loader. dm= [DM] Allows early creation of a device-mapper device. See Documentation/device-mapper/boot.txt. dma_debug=off If the kernel is compiled with DMA_API_DEBUG support, this option disables the debugging code at boot. Loading drivers/md/dm-ioctl.c +39 −0 Original line number Diff line number Diff line Loading @@ -1923,6 +1923,45 @@ void dm_interface_exit(void) dm_hash_exit(); } /** * dm_ioctl_export - Permanently export a mapped device via the ioctl interface * @md: Pointer to mapped_device * @name: Buffer (size DM_NAME_LEN) for name * @uuid: Buffer (size DM_UUID_LEN) for uuid or NULL if not desired */ int dm_ioctl_export(struct mapped_device *md, const char *name, const char *uuid) { int r = 0; struct hash_cell *hc; if (!md) { r = -ENXIO; goto out; } /* The name and uuid can only be set once. */ mutex_lock(&dm_hash_cells_mutex); hc = dm_get_mdptr(md); mutex_unlock(&dm_hash_cells_mutex); if (hc) { DMERR("%s: already exported", dm_device_name(md)); r = -ENXIO; goto out; } r = dm_hash_insert(name, uuid, md); if (r) { DMERR("%s: could not bind to '%s'", dm_device_name(md), name); goto out; } /* Let udev know we've changed. */ dm_kobject_uevent(md, KOBJ_CHANGE, dm_get_event_nr(md)); out: return r; } /** * dm_copy_name_and_uuid - Copy mapped device name & uuid into supplied buffers * @md: Pointer to mapped_device Loading drivers/md/dm-table.c +1 −0 Original line number Diff line number Diff line Loading @@ -11,6 +11,7 @@ #include <linux/vmalloc.h> #include <linux/blkdev.h> #include <linux/namei.h> #include <linux/mount.h> #include <linux/ctype.h> #include <linux/string.h> #include <linux/slab.h> Loading include/linux/device-mapper.h +6 −0 Original line number Diff line number Diff line Loading @@ -382,6 +382,12 @@ void dm_put(struct mapped_device *md); void dm_set_mdptr(struct mapped_device *md, void *ptr); void *dm_get_mdptr(struct mapped_device *md); /* * Export the device via the ioctl interface (uses mdptr). */ int dm_ioctl_export(struct mapped_device *md, const char *name, const char *uuid); /* * A device can still be used while suspended, but I/O is deferred. */ Loading Loading
Documentation/device-mapper/boot.txt 0 → 100644 +42 −0 Original line number Diff line number Diff line Boot time creation of mapped devices =================================== It is possible to configure a device mapper device to act as the root device for your system in two ways. The first is to build an initial ramdisk which boots to a minimal userspace which configures the device, then pivot_root(8) in to it. For simple device mapper configurations, it is possible to boot directly using the following kernel command line: dm="<name> <uuid> <ro>,table line 1,...,table line n" name = the name to associate with the device after boot, udev, if used, will use that name to label the device node. uuid = may be 'none' or the UUID desired for the device. ro = may be "ro" or "rw". If "ro", the device and device table will be marked read-only. Each table line may be as normal when using the dmsetup tool except for two variations: 1. Any use of commas will be interpreted as a newline 2. Quotation marks cannot be escaped and cannot be used without terminating the dm= argument. Unless renamed by udev, the device node created will be dm-0 as the first minor number for the device-mapper is used during early creation. Example ======= - Booting to a linear array made up of user-mode linux block devices: dm="lroot none 0, 0 4096 linear 98:16 0, 4096 4096 linear 98:32 0" \ root=/dev/dm-0 Will boot to a rw dm-linear target of 8192 sectors split across two block devices identified by their major:minor numbers. After boot, udev will rename this target to /dev/mapper/lroot (depending on the rules). No uuid was assigned.
Documentation/kernel-parameters.txt +4 −0 Original line number Diff line number Diff line Loading @@ -56,6 +56,7 @@ parameter is applicable: BLACKFIN Blackfin architecture is enabled. CLK Common clock infrastructure is enabled. CMA Contiguous Memory Area support is enabled. DM Device mapper support is enabled. DRM Direct Rendering Management support is enabled. DYNAMIC_DEBUG Build in debug messages and enable them at runtime EDD BIOS Enhanced Disk Drive Services (EDD) is enabled Loading Loading @@ -919,6 +920,9 @@ bytes respectively. Such letter suffixes can also be entirely omitted. dis_ucode_ldr [X86] Disable the microcode loader. dm= [DM] Allows early creation of a device-mapper device. See Documentation/device-mapper/boot.txt. dma_debug=off If the kernel is compiled with DMA_API_DEBUG support, this option disables the debugging code at boot. Loading
drivers/md/dm-ioctl.c +39 −0 Original line number Diff line number Diff line Loading @@ -1923,6 +1923,45 @@ void dm_interface_exit(void) dm_hash_exit(); } /** * dm_ioctl_export - Permanently export a mapped device via the ioctl interface * @md: Pointer to mapped_device * @name: Buffer (size DM_NAME_LEN) for name * @uuid: Buffer (size DM_UUID_LEN) for uuid or NULL if not desired */ int dm_ioctl_export(struct mapped_device *md, const char *name, const char *uuid) { int r = 0; struct hash_cell *hc; if (!md) { r = -ENXIO; goto out; } /* The name and uuid can only be set once. */ mutex_lock(&dm_hash_cells_mutex); hc = dm_get_mdptr(md); mutex_unlock(&dm_hash_cells_mutex); if (hc) { DMERR("%s: already exported", dm_device_name(md)); r = -ENXIO; goto out; } r = dm_hash_insert(name, uuid, md); if (r) { DMERR("%s: could not bind to '%s'", dm_device_name(md), name); goto out; } /* Let udev know we've changed. */ dm_kobject_uevent(md, KOBJ_CHANGE, dm_get_event_nr(md)); out: return r; } /** * dm_copy_name_and_uuid - Copy mapped device name & uuid into supplied buffers * @md: Pointer to mapped_device Loading
drivers/md/dm-table.c +1 −0 Original line number Diff line number Diff line Loading @@ -11,6 +11,7 @@ #include <linux/vmalloc.h> #include <linux/blkdev.h> #include <linux/namei.h> #include <linux/mount.h> #include <linux/ctype.h> #include <linux/string.h> #include <linux/slab.h> Loading
include/linux/device-mapper.h +6 −0 Original line number Diff line number Diff line Loading @@ -382,6 +382,12 @@ void dm_put(struct mapped_device *md); void dm_set_mdptr(struct mapped_device *md, void *ptr); void *dm_get_mdptr(struct mapped_device *md); /* * Export the device via the ioctl interface (uses mdptr). */ int dm_ioctl_export(struct mapped_device *md, const char *name, const char *uuid); /* * A device can still be used while suspended, but I/O is deferred. */ Loading