{
    "content": [
        {
            "type": "text",
            "text": "# dmsetup (man)\n\n## NAME\n\ndmsetup — low level logical volume management\n\n## SYNOPSIS\n\ndmsetup clear devicename\ndmsetup create devicename [-n|--notable|--table table|tablefile] [--readahead [+]sectors|\nauto|none] [-u|--uuid uuid] [--addnodeoncreate|--addnodeonresume]\ndmsetup create --concise [concisedevicespecification]\ndmsetup deps [-o options] [devicename...]\ndmsetup help [-c|-C|--columns]\ndmsetup info [devicename...]\ndmsetup info -c|-C|--columns [--count count] [--interval seconds] [--noheadings] [-o fields]\n[-O|--sort sortfields] [--nameprefixes] [--separator separator] [devicename]\ndmsetup load devicename [--table table|tablefile]\ndmsetup ls [--target targettype] [-o options] [--exec command] [--tree]\ndmsetup mangle [devicename...]\ndmsetup measure [devicename...]\ndmsetup message devicename sector message\ndmsetup mknodes [devicename...]\ndmsetup reload devicename [--table table|tablefile]\ndmsetup remove [-f|--force] [--retry] [--deferred] devicename...\ndmsetup removeall [-f|--force] [--deferred]\ndmsetup rename devicename newname\ndmsetup rename devicename --setuuid uuid\ndmsetup resume devicename...  [--addnodeoncreate|--addnodeonresume] [--noflush] [--nolockfs]\n[--readahead [+]sectors|auto|none]\ndmsetup setgeometry devicename cyl head sect start\ndmsetup splitname devicename [subsystem]\ndmsetup stats command [options]\ndmsetup status [--target targettype] [--noflush] [devicename...]\ndmsetup suspend [--nolockfs] [--noflush] devicename...\ndmsetup table [--concise] [--target targettype] [--showkeys] [devicename...]\n\n## DESCRIPTION\n\ndmsetup  manages  logical  devices that use the device-mapper driver.  Devices are created by\nloading a table that specifies a target for each sector (512 bytes) in the logical device.\n\n## Sections\n\n- **NAME**\n- **SYNOPSIS** (4 subsections)\n- **DESCRIPTION**\n- **OPTIONS** (25 subsections)\n- **COMMANDS** (4 subsections)\n- **TABLE FORMAT** (2 subsections)\n- **EXAMPLES**\n- **CONCISE FORMAT**\n- **ENVIRONMENT VARIABLES**\n- **AUTHORS**\n- **SEE ALSO**\n\nUse structuredContent.sections for detailed options, examples, and full documentation.\n"
        }
    ],
    "structuredContent": {
        "command": "dmsetup",
        "section": "",
        "mode": "man",
        "summary": "dmsetup — low level logical volume management",
        "synopsis": "dmsetup clear devicename\ndmsetup create devicename [-n|--notable|--table table|tablefile] [--readahead [+]sectors|\nauto|none] [-u|--uuid uuid] [--addnodeoncreate|--addnodeonresume]\ndmsetup create --concise [concisedevicespecification]\ndmsetup deps [-o options] [devicename...]\ndmsetup help [-c|-C|--columns]\ndmsetup info [devicename...]\ndmsetup info -c|-C|--columns [--count count] [--interval seconds] [--noheadings] [-o fields]\n[-O|--sort sortfields] [--nameprefixes] [--separator separator] [devicename]\ndmsetup load devicename [--table table|tablefile]\ndmsetup ls [--target targettype] [-o options] [--exec command] [--tree]\ndmsetup mangle [devicename...]\ndmsetup measure [devicename...]\ndmsetup message devicename sector message\ndmsetup mknodes [devicename...]\ndmsetup reload devicename [--table table|tablefile]\ndmsetup remove [-f|--force] [--retry] [--deferred] devicename...\ndmsetup removeall [-f|--force] [--deferred]\ndmsetup rename devicename newname\ndmsetup rename devicename --setuuid uuid\ndmsetup resume devicename...  [--addnodeoncreate|--addnodeonresume] [--noflush] [--nolockfs]\n[--readahead [+]sectors|auto|none]\ndmsetup setgeometry devicename cyl head sect start\ndmsetup splitname devicename [subsystem]\ndmsetup stats command [options]\ndmsetup status [--target targettype] [--noflush] [devicename...]\ndmsetup suspend [--nolockfs] [--noflush] devicename...\ndmsetup table [--concise] [--target targettype] [--showkeys] [devicename...]",
        "tldr_summary": null,
        "tldr_examples": [],
        "tldr_source": null,
        "flags": [
            {
                "flag": "",
                "long": "--addnodeoncreate",
                "arg": null,
                "description": "Ensure /dev/mapper node exists after dmsetup create."
            },
            {
                "flag": "",
                "long": "--addnodeonresume",
                "arg": null,
                "description": "Ensure /dev/mapper node exists after dmsetup resume (default with udev)."
            },
            {
                "flag": "",
                "long": "--checks",
                "arg": null,
                "description": "Perform additional checks on the operations requested and report potential problems. Useful when debugging scripts. In some cases these checks may slow down operations noticeably."
            },
            {
                "flag": "-C",
                "long": "--columns",
                "arg": null,
                "description": "Display output in columns rather than as Field: Value lines. --count count Specify the number of times to repeat a report. Set this to zero continue until inter‐ rupted. The default interval is one second."
            },
            {
                "flag": "-f",
                "long": "--force",
                "arg": null,
                "description": "Try harder to complete operation."
            },
            {
                "flag": "-h",
                "long": "--help",
                "arg": null,
                "description": "Outputs a summary of the commands available, optionally including the list of report fields (synonym with help command)."
            },
            {
                "flag": "",
                "long": "--inactive",
                "arg": null,
                "description": "When returning any table information from the kernel report on the inactive table in‐ stead of the live table. Requires kernel driver version 4.16.0 or above. --interval seconds Specify the interval in seconds between successive iterations for repeating reports. If --interval is specified but --count is not, reports will continue to repeat until interrupted. The default interval is one second. --manglename auto|hex|none Mangle any character not on a whitelist using manglingmode when processing device- mapper device names and UUIDs. The names and UUIDs are mangled on input and unmangled on output where the mangling mode is one of: auto (only do the mangling if not mangled yet, do nothing if already mangled, error on mixed), hex (always do the mangling) and none (no mangling). Default mode is auto. Character whitelist: 0-9, A-Z, a-z, #+-.:=@. This whitelist is also supported by udev. Any character not on a whitelist is replaced with its hex value (two digits) prefixed by \\x. Mangling mode could be also set through DMDEFAULTNAMEMANGLINGMODE environment variable."
            },
            {
                "flag": "-j",
                "long": "--major",
                "arg": null,
                "description": "Specify the major number."
            },
            {
                "flag": "-m",
                "long": "--minor",
                "arg": null,
                "description": "Specify the minor number."
            },
            {
                "flag": "-n",
                "long": "--notable",
                "arg": null,
                "description": "When creating a device, don't load any table."
            },
            {
                "flag": "",
                "long": "--nameprefixes",
                "arg": null,
                "description": "Add a \"DM\" prefix plus the field name to the output. Useful with --noheadings to produce a list of field=value pairs that can be used to set environment variables (for example, in udev(7) rules)."
            },
            {
                "flag": "",
                "long": "--noheadings",
                "arg": null,
                "description": "Suppress the headings line when using columnar output."
            },
            {
                "flag": "",
                "long": "--noflush",
                "arg": null,
                "description": "Do not flush outstanding I/O when suspending a device, or do not commit thin-pool metadata when obtaining thin-pool status."
            },
            {
                "flag": "",
                "long": "--nolockfs",
                "arg": null,
                "description": "Do not attempt to synchronize filesystem eg, when suspending a device."
            },
            {
                "flag": "",
                "long": "--noopencount",
                "arg": null,
                "description": "Tell the kernel not to supply the open reference count for the device."
            },
            {
                "flag": "",
                "long": "--noudevrules",
                "arg": null,
                "description": "Do not allow udev to manage nodes for devices in device-mapper directory."
            },
            {
                "flag": "",
                "long": "--noudevsync",
                "arg": null,
                "description": "Do not synchronise with udev when creating, renaming or removing devices."
            },
            {
                "flag": "-o",
                "long": "--options",
                "arg": null,
                "description": "Specify which fields to display. --readahead [+]sectors|auto|none Specify read ahead size in units of sectors. The default value is auto which allows the kernel to choose a suitable value automatically. The + prefix lets you specify a minimum value which will not be used if it is smaller than the value chosen by the kernel. The value none is equivalent to specifying zero."
            },
            {
                "flag": "-r",
                "long": "--readonly",
                "arg": null,
                "description": "Set the table being loaded read-only."
            },
            {
                "flag": "-S",
                "long": "--select",
                "arg": null,
                "description": "Process only items that match selection criteria. If the command is producing report output, adding the \"selected\" column (-o selected) displays all rows and shows 1 if the row matches the selection and 0 otherwise. The selection criteria are defined by specifying column names and their valid values while making use of supported compari‐ son operators. As a quick help and to see full list of column names that can be used in selection and the set of supported selection operators, check the output of dmset‐ up info -c -S help command. --table table Specify a one-line table directly on the command line. See below for more information on the table format. --udevcookie cookie Use cookie for udev synchronisation. Note: Same cookie should be used for same type of operations i.e. creation of multiple different devices. It's not adviced to combine different operations on the single device."
            },
            {
                "flag": "-u",
                "long": "--uuid",
                "arg": null,
                "description": "Specify the uuid."
            },
            {
                "flag": "-y",
                "long": "--yes",
                "arg": null,
                "description": "Answer yes to all prompts automatically."
            },
            {
                "flag": "-v",
                "long": "--verbose",
                "arg": null,
                "description": "Produce additional output."
            },
            {
                "flag": "",
                "long": "--verifyudev",
                "arg": null,
                "description": "If udev synchronisation is enabled, verify that udev operations get performed correct‐ ly and try to fix up the device nodes afterwards if not."
            },
            {
                "flag": "",
                "long": "--version",
                "arg": null,
                "description": "Display the library and kernel driver version."
            }
        ],
        "examples": [
            "# A table to join two disks together",
            "0 1028160 linear /dev/hda 0",
            "1028160 3903762 linear /dev/hdb 0",
            "# A table to stripe across the two disks,",
            "# and add the spare space from",
            "# hdb to the back of the volume",
            "0 2056320 striped 2 32 /dev/hda 0 /dev/hdb 0",
            "2056320 2875602 linear /dev/hdb 1028160"
        ],
        "see_also": [
            {
                "name": "dmstats",
                "section": "8",
                "url": "https://www.chedong.com/phpMan.php/man/dmstats/8/json"
            },
            {
                "name": "udev",
                "section": "7",
                "url": "https://www.chedong.com/phpMan.php/man/udev/7/json"
            },
            {
                "name": "udevadm",
                "section": "8",
                "url": "https://www.chedong.com/phpMan.php/man/udevadm/8/json"
            }
        ],
        "section_outline": [
            {
                "name": "NAME",
                "lines": 2,
                "subsections": []
            },
            {
                "name": "SYNOPSIS",
                "lines": 28,
                "subsections": [
                    {
                        "name": "dmsetup targets",
                        "lines": 2
                    },
                    {
                        "name": "dmsetup udevcookie",
                        "lines": 1
                    },
                    {
                        "name": "dmsetup udevcreatecookie",
                        "lines": 2
                    },
                    {
                        "name": "dmsetup version",
                        "lines": 6
                    }
                ]
            },
            {
                "name": "DESCRIPTION",
                "lines": 9,
                "subsections": []
            },
            {
                "name": "OPTIONS",
                "lines": 1,
                "subsections": [
                    {
                        "name": "--addnodeoncreate",
                        "lines": 2,
                        "long": "--addnodeoncreate"
                    },
                    {
                        "name": "--addnodeonresume",
                        "lines": 2,
                        "long": "--addnodeonresume"
                    },
                    {
                        "name": "--checks",
                        "lines": 4,
                        "long": "--checks"
                    },
                    {
                        "name": "-c -C --columns",
                        "lines": 6,
                        "flag": "-C",
                        "long": "--columns"
                    },
                    {
                        "name": "-f --force",
                        "lines": 2,
                        "flag": "-f",
                        "long": "--force"
                    },
                    {
                        "name": "-h --help",
                        "lines": 3,
                        "flag": "-h",
                        "long": "--help"
                    },
                    {
                        "name": "--inactive",
                        "lines": 18,
                        "long": "--inactive"
                    },
                    {
                        "name": "-j --major _",
                        "lines": 2,
                        "flag": "-j",
                        "long": "--major"
                    },
                    {
                        "name": "-m --minor _",
                        "lines": 2,
                        "flag": "-m",
                        "long": "--minor"
                    },
                    {
                        "name": "-n --notable",
                        "lines": 2,
                        "flag": "-n",
                        "long": "--notable"
                    },
                    {
                        "name": "--nameprefixes",
                        "lines": 4,
                        "long": "--nameprefixes"
                    },
                    {
                        "name": "--noheadings",
                        "lines": 2,
                        "long": "--noheadings"
                    },
                    {
                        "name": "--noflush",
                        "lines": 3,
                        "long": "--noflush"
                    },
                    {
                        "name": "--nolockfs",
                        "lines": 2,
                        "long": "--nolockfs"
                    },
                    {
                        "name": "--noopencount",
                        "lines": 2,
                        "long": "--noopencount"
                    },
                    {
                        "name": "--noudevrules",
                        "lines": 2,
                        "long": "--noudevrules"
                    },
                    {
                        "name": "--noudevsync",
                        "lines": 2,
                        "long": "--noudevsync"
                    },
                    {
                        "name": "-o --options _",
                        "lines": 8,
                        "flag": "-o",
                        "long": "--options"
                    },
                    {
                        "name": "-r --readonly",
                        "lines": 2,
                        "flag": "-r",
                        "long": "--readonly"
                    },
                    {
                        "name": "-S --select _",
                        "lines": 17,
                        "flag": "-S",
                        "long": "--select"
                    },
                    {
                        "name": "-u --uuid _",
                        "lines": 2,
                        "flag": "-u",
                        "long": "--uuid"
                    },
                    {
                        "name": "-y --yes",
                        "lines": 2,
                        "flag": "-y",
                        "long": "--yes"
                    },
                    {
                        "name": "-v --verbose  -v --verbose",
                        "lines": 2,
                        "flag": "-v",
                        "long": "--verbose"
                    },
                    {
                        "name": "--verifyudev",
                        "lines": 3,
                        "long": "--verifyudev"
                    },
                    {
                        "name": "--version",
                        "lines": 2,
                        "long": "--version"
                    }
                ]
            },
            {
                "name": "COMMANDS",
                "lines": 160,
                "subsections": [
                    {
                        "name": "targets",
                        "lines": 10
                    },
                    {
                        "name": "udevcookie",
                        "lines": 3
                    },
                    {
                        "name": "udevcreatecookie",
                        "lines": 23
                    },
                    {
                        "name": "version",
                        "lines": 13
                    }
                ]
            },
            {
                "name": "TABLE FORMAT",
                "lines": 40,
                "subsections": [
                    {
                        "name": "multipath",
                        "lines": 4
                    },
                    {
                        "name": "snapshot",
                        "lines": 10
                    }
                ]
            },
            {
                "name": "EXAMPLES",
                "lines": 6,
                "subsections": []
            },
            {
                "name": "CONCISE FORMAT",
                "lines": 23,
                "subsections": []
            },
            {
                "name": "ENVIRONMENT VARIABLES",
                "lines": 11,
                "subsections": []
            },
            {
                "name": "AUTHORS",
                "lines": 2,
                "subsections": []
            },
            {
                "name": "SEE ALSO",
                "lines": 6,
                "subsections": []
            }
        ],
        "sections": {
            "NAME": {
                "content": "dmsetup — low level logical volume management\n",
                "subsections": []
            },
            "SYNOPSIS": {
                "content": "dmsetup clear devicename\ndmsetup create devicename [-n|--notable|--table table|tablefile] [--readahead [+]sectors|\nauto|none] [-u|--uuid uuid] [--addnodeoncreate|--addnodeonresume]\ndmsetup create --concise [concisedevicespecification]\ndmsetup deps [-o options] [devicename...]\ndmsetup help [-c|-C|--columns]\ndmsetup info [devicename...]\ndmsetup info -c|-C|--columns [--count count] [--interval seconds] [--noheadings] [-o fields]\n[-O|--sort sortfields] [--nameprefixes] [--separator separator] [devicename]\ndmsetup load devicename [--table table|tablefile]\ndmsetup ls [--target targettype] [-o options] [--exec command] [--tree]\ndmsetup mangle [devicename...]\ndmsetup measure [devicename...]\ndmsetup message devicename sector message\ndmsetup mknodes [devicename...]\ndmsetup reload devicename [--table table|tablefile]\ndmsetup remove [-f|--force] [--retry] [--deferred] devicename...\ndmsetup removeall [-f|--force] [--deferred]\ndmsetup rename devicename newname\ndmsetup rename devicename --setuuid uuid\ndmsetup resume devicename...  [--addnodeoncreate|--addnodeonresume] [--noflush] [--nolockfs]\n[--readahead [+]sectors|auto|none]\ndmsetup setgeometry devicename cyl head sect start\ndmsetup splitname devicename [subsystem]\ndmsetup stats command [options]\ndmsetup status [--target targettype] [--noflush] [devicename...]\ndmsetup suspend [--nolockfs] [--noflush] devicename...\ndmsetup table [--concise] [--target targettype] [--showkeys] [devicename...]",
                "subsections": [
                    {
                        "name": "dmsetup targets",
                        "content": "dmsetup udevcomplete cookie\ndmsetup udevcompleteall [ageinminutes]"
                    },
                    {
                        "name": "dmsetup udevcookie",
                        "content": ""
                    },
                    {
                        "name": "dmsetup udevcreatecookie",
                        "content": "dmsetup udevflags cookie\ndmsetup udevreleasecookie [cookie]"
                    },
                    {
                        "name": "dmsetup version",
                        "content": "dmsetup wait [--noflush] devicename [eventnr]\ndmsetup wipetable devicename...  [-f|--force] [--noflush] [--nolockfs]\n\ndevmapname major minor\ndevmapname major:minor\n"
                    }
                ]
            },
            "DESCRIPTION": {
                "content": "dmsetup  manages  logical  devices that use the device-mapper driver.  Devices are created by\nloading a table that specifies a target for each sector (512 bytes) in the logical device.\n\nThe first argument to dmsetup is a command.  The second argument is the logical  device  name\nor uuid.\n\nInvoking  the dmsetup tool as devmapname (which is not normally distributed and is supported\nonly for historical reasons) is equivalent to dmsetup info -c --noheadings -j major -m minor.\n",
                "subsections": []
            },
            "OPTIONS": {
                "content": "",
                "subsections": [
                    {
                        "name": "--addnodeoncreate",
                        "content": "Ensure /dev/mapper node exists after dmsetup create.\n",
                        "long": "--addnodeoncreate"
                    },
                    {
                        "name": "--addnodeonresume",
                        "content": "Ensure /dev/mapper node exists after dmsetup resume (default with udev).\n",
                        "long": "--addnodeonresume"
                    },
                    {
                        "name": "--checks",
                        "content": "Perform additional checks on the operations requested and report  potential  problems.\nUseful  when  debugging  scripts.  In some cases these checks may slow down operations\nnoticeably.\n",
                        "long": "--checks"
                    },
                    {
                        "name": "-c -C --columns",
                        "content": "Display output in columns rather than as Field: Value lines.\n\n--count count\nSpecify the number of times to repeat a report. Set this to zero continue until inter‐\nrupted.  The default interval is one second.\n",
                        "flag": "-C",
                        "long": "--columns"
                    },
                    {
                        "name": "-f --force",
                        "content": "Try harder to complete operation.\n",
                        "flag": "-f",
                        "long": "--force"
                    },
                    {
                        "name": "-h --help",
                        "content": "Outputs a summary of the commands available, optionally including the list  of  report\nfields (synonym with help command).\n",
                        "flag": "-h",
                        "long": "--help"
                    },
                    {
                        "name": "--inactive",
                        "content": "When  returning any table information from the kernel report on the inactive table in‐\nstead of the live table.  Requires kernel driver version 4.16.0 or above.\n\n--interval seconds\nSpecify the interval in seconds between successive iterations for  repeating  reports.\nIf  --interval  is specified but --count is not, reports will continue to repeat until\ninterrupted.  The default interval is one second.\n\n--manglename auto|hex|none\nMangle any character not on a whitelist using manglingmode  when  processing  device-\nmapper  device names and UUIDs. The names and UUIDs are mangled on input and unmangled\non output where the mangling mode is one of: auto (only do the mangling if not mangled\nyet, do nothing if already mangled, error on mixed), hex (always do the mangling)  and\nnone  (no  mangling).   Default  mode  is  auto.   Character whitelist: 0-9, A-Z, a-z,\n#+-.:=@. This whitelist is also supported by udev. Any character not on  a  whitelist\nis  replaced  with  its hex value (two digits) prefixed by \\x.  Mangling mode could be\nalso set through DMDEFAULTNAMEMANGLINGMODE environment variable.\n",
                        "long": "--inactive"
                    },
                    {
                        "name": "-j --major _",
                        "content": "Specify the major number.\n",
                        "flag": "-j",
                        "long": "--major"
                    },
                    {
                        "name": "-m --minor _",
                        "content": "Specify the minor number.\n",
                        "flag": "-m",
                        "long": "--minor"
                    },
                    {
                        "name": "-n --notable",
                        "content": "When creating a device, don't load any table.\n",
                        "flag": "-n",
                        "long": "--notable"
                    },
                    {
                        "name": "--nameprefixes",
                        "content": "Add a \"DM\" prefix plus the field name to the output.   Useful  with  --noheadings  to\nproduce a list of field=value pairs that can be used to set environment variables (for\nexample, in udev(7) rules).\n",
                        "long": "--nameprefixes"
                    },
                    {
                        "name": "--noheadings",
                        "content": "Suppress the headings line when using columnar output.\n",
                        "long": "--noheadings"
                    },
                    {
                        "name": "--noflush",
                        "content": "Do  not  flush  outstanding  I/O  when suspending a device, or do not commit thin-pool\nmetadata when obtaining thin-pool status.\n",
                        "long": "--noflush"
                    },
                    {
                        "name": "--nolockfs",
                        "content": "Do not attempt to synchronize filesystem eg, when suspending a device.\n",
                        "long": "--nolockfs"
                    },
                    {
                        "name": "--noopencount",
                        "content": "Tell the kernel not to supply the open reference count for the device.\n",
                        "long": "--noopencount"
                    },
                    {
                        "name": "--noudevrules",
                        "content": "Do not allow udev to manage nodes for devices in device-mapper directory.\n",
                        "long": "--noudevrules"
                    },
                    {
                        "name": "--noudevsync",
                        "content": "Do not synchronise with udev when creating, renaming or removing devices.\n",
                        "long": "--noudevsync"
                    },
                    {
                        "name": "-o --options _",
                        "content": "Specify which fields to display.\n\n--readahead [+]sectors|auto|none\nSpecify read ahead size in units of sectors.  The default value is auto  which  allows\nthe  kernel to choose a suitable value automatically.  The + prefix lets you specify a\nminimum value which will not be used if it is smaller than the  value  chosen  by  the\nkernel.  The value none is equivalent to specifying zero.\n",
                        "flag": "-o",
                        "long": "--options"
                    },
                    {
                        "name": "-r --readonly",
                        "content": "Set the table being loaded read-only.\n",
                        "flag": "-r",
                        "long": "--readonly"
                    },
                    {
                        "name": "-S --select _",
                        "content": "Process  only items that match selection criteria.  If the command is producing report\noutput, adding the \"selected\" column (-o selected) displays all rows and  shows  1  if\nthe  row  matches the selection and 0 otherwise. The selection criteria are defined by\nspecifying column names and their valid values while making use of supported  compari‐\nson  operators.  As a quick help and to see full list of column names that can be used\nin selection and the set of supported selection operators, check the output of  dmset‐\nup info -c -S help command.\n\n--table table\nSpecify a one-line table directly on the command line.  See below for more information\non the table format.\n\n--udevcookie cookie\nUse  cookie  for udev synchronisation.  Note: Same cookie should be used for same type\nof operations i.e. creation of multiple different devices. It's not adviced to combine\ndifferent operations on the single device.\n",
                        "flag": "-S",
                        "long": "--select"
                    },
                    {
                        "name": "-u --uuid _",
                        "content": "Specify the uuid.\n",
                        "flag": "-u",
                        "long": "--uuid"
                    },
                    {
                        "name": "-y --yes",
                        "content": "Answer yes to all prompts automatically.\n",
                        "flag": "-y",
                        "long": "--yes"
                    },
                    {
                        "name": "-v --verbose  -v --verbose",
                        "content": "Produce additional output.\n",
                        "flag": "-v",
                        "long": "--verbose"
                    },
                    {
                        "name": "--verifyudev",
                        "content": "If udev synchronisation is enabled, verify that udev operations get performed correct‐\nly and try to fix up the device nodes afterwards if not.\n",
                        "long": "--verifyudev"
                    },
                    {
                        "name": "--version",
                        "content": "Display the library and kernel driver version.\n",
                        "long": "--version"
                    }
                ]
            },
            "COMMANDS": {
                "content": "clear devicename\nDestroys the table in the inactive table slot for devicename.\n\ncreate devicename [-n|--notable|--table table|tablefile] [--readahead [+]sectors|auto|none]\n[-u|--uuid uuid] [--addnodeoncreate|--addnodeonresume]\nCreates a device with the given name.  If table or tablefile is supplied,  the  table\nis  loaded  and made live.  Otherwise a table is read from standard input unless --no‐\ntable is used.  The optional uuid can be used in place of  devicename  in  subsequent\ndmsetup  commands.   If successful the device will appear in table and for live device\nthe node /dev/mapper/devicename is created.  See below for more  information  on  the\ntable format.\n\ncreate --concise [concisedevicespecification]\nCreates one or more devices from a concise device specification.  Each device is spec‐\nified  by a comma-separated list: name, uuid, minor number, flags, comma-separated ta‐\nble lines.  Flags defaults to read-write (rw) or may be read-only (ro).   Uuid,  minor\nnumber  and  flags  are optional so those fields may be empty.  A semi-colon separates\nspecifications of different devices.  Use a backslash to escape the following  charac‐\nter, for example a comma or semi-colon in a name or table. See also CONCISE FORMAT be‐\nlow.\n\ndeps [-o options] [devicename...]\nOutputs  a  list of devices referenced by the live table for the specified device. De‐\nvice names on output can be customised by following options: devno  (major  and  minor\npair,  used by default), blkdevname (block device name), devname (map name for device-\nmapper devices, equal to blkdevname otherwise).\n\nhelp [-c|-C|--columns]\nOutputs a summary of the commands available, optionally including the list  of  report\nfields.\n\ninfo [devicename...]\nOutputs some brief information about the device in the form:\nState: SUSPENDED|ACTIVE, READ-ONLY\nTables present: LIVE and/or INACTIVE\nOpen reference count\nLast event sequence number (used by wait)\nMajor and minor device number\nNumber of targets in the live table\nUUID\n\n\ninfo -c|-C|--columns [--count count] [--interval seconds] [--noheadings] [-o fields]\n[-O|--sort sortfields] [--nameprefixes] [--separator separator] [devicename]\nOutput  you  can  customise.  Fields are comma-separated and chosen from the following\nlist: name, major, minor, attr, open, segments, events, uuid.  Attributes are: (L)ive,\n(I)nactive, (s)uspended, (r)ead-only, read-(w)rite.  Precede the list with '+' to  ap‐\npend  to  the  default selection of columns instead of replacing it.  Precede any sort\nfield with '-' for a reverse sort on that column.\n\nls [--target targettype] [-o options] [--exec command] [--tree]\nList device names.  Optionally only list devices that have at least one target of  the\nspecified type.  Optionally execute a command for each device.  The device name is ap‐\npended to the supplied command.  Device names on output can be customised by following\noptions:  devno  (major  and  minor  pair,  used by default), blkdevname (block device\nname), devname (map name for device-mapper devices, equal  to  blkdevname  otherwise).\n--tree  displays  dependencies between devices as a tree.  It accepts a comma-separate\nlist of options.  Some specify  the  information  displayed  against  each  node:  de‐\nvice/nodevice;  blkdevname;  active,  open,  rw, uuid.  Others specify how the tree is\ndisplayed: ascii, utf, vt100; compact, inverted, notrunc.\n\nload|reload devicename [--table table|tablefile]\nLoads table or tablefile into the inactive table slot for devicename.  If neither is\nsupplied, reads a table from standard input.\n\nmangle [devicename...]\nEnsure existing device-mapper devicename and UUID is in the correct mangled form con‐\ntaining only whitelisted characters (supported by udev) and do a rename if  necessary.\nAny  character not on the whitelist will be mangled based on the --manglename setting.\nAutomatic rename works only for device names and not for device UUIDs because the ker‐\nnel does not allow changing the UUID of active devices. Any incorrect  UUIDs  are  re‐\nported  only  and they must be manually corrected by deactivating the device first and\nthen reactivating it with proper mangling mode used (see also --manglename).\n\nmeasure [devicename...]\nShow the data that devicename would report to the IMA subsystem if a measurement  was\ntriggered  at the current time.  This is for debugging and does not actually trigger a\nmeasurement.\n\nmessage devicename sector message\nSend message to target. If sector not needed use 0.\n\nmknodes [devicename...]\nEnsure that the node in /dev/mapper for devicename is correct.  If no devicename  is\nsupplied,  ensure that all nodes in /dev/mapper correspond to mapped devices currently\nloaded by the device-mapper kernel driver, adding, changing or removing nodes as  nec‐\nessary.\n\nremove [-f|--force] [--retry] [--deferred] devicename...\nRemoves  a  device.   It will no longer be visible to dmsetup.  Open devices cannot be\nremoved, but adding --force will replace the table with one that fails all I/O.  --de‐\nferred will enable deferred removal of open devices - the device will be removed  when\nthe  last  user  closes  it.  The  deferred removal feature is supported since version\n4.27.0 of the device-mapper driver available in upstream kernel  version  3.13.   (Use\ndmsetup  version  to check this.)  If an attempt to remove a device fails, perhaps be‐\ncause a process run from a quick udev rule temporarily opened the device, the  --retry\noption  will  cause  the operation to be retried for a few seconds before failing.  Do\nNOT combine --force and --udevcookie, as udev may start to process udev rules  in  the\nmiddle of error target replacement and result in nondeterministic result.\n\nremoveall [-f|--force] [--deferred]\nAttempts  to remove all device definitions i.e. reset the driver.  This also runs mkn‐\nodes afterwards.  Use with care!  Open devices cannot be removed, but  adding  --force\nwill  replace  the table with one that fails all I/O.  --deferred will enable deferred\nremoval of open devices - the device will be removed when the  last  user  closes  it.\nThe  deferred  removal  feature is supported since version 4.27.0 of the device-mapper\ndriver available in upstream kernel version 3.13.\n\nrename devicename newname\nRenames a device.\n\nrename devicename --setuuid uuid\nSets the uuid of a device that was created without a uuid.  After a uuid has been  set\nit cannot be changed.\n\nresume devicename...  [--addnodeoncreate|--addnodeonresume] [--noflush] [--nolockfs]\n[--readahead [+]sectors|auto|none]\nUn-suspends  a  device.  If an inactive table has been loaded, it becomes live.  Post‐\nponed I/O then gets re-queued for processing.\n\nsetgeometry devicename cyl head sect start\nSets the device geometry to C/H/S.\n\nsplitname devicename [subsystem]\nSplits given device name into subsystem constituents.  The default subsystem  is  LVM.\nLVM  currently  generates device names by concatenating the names of the Volume Group,\nLogical Volume and any internal Layer with a hyphen as separator.  Any hyphens  within\nthe  names  are doubled to escape them.  The precise encoding might change without no‐\ntice in any future release, so we recommend you always decode using the  current  ver‐\nsion of this command.\n\nstats command [options]\nManages IO statistics regions for devices.  See dmstats(8) for more details.\n\nstatus [--target targettype] [--noflush] [devicename...]\nOutputs  status information for each of the device's targets.  With --target, only in‐\nformation relating to the specified target type any is displayed.  With --noflush, the\nthin target (from version 1.3.0) doesn't commit any outstanding changes to disk before\nreporting its statistics.\n\nsuspend [--nolockfs] [--noflush] devicename...\nSuspends a device.  Any I/O that has already been mapped by the device but has not yet\ncompleted will be flushed.  Any further I/O to that device will be  postponed  for  as\nlong as the device is suspended.  If there's a filesystem on the device which supports\nthe  operation,  an  attempt will be made to sync it first unless --nolockfs is speci‐\nfied.  Some targets such as recent (October 2006) versions of  multipath  may  support\nthe  --noflush  option.  This lets outstanding I/O that has not yet reached the device\nto remain unflushed.\n\ntable [--concise] [--target targettype] [--showkeys] [devicename...]\nOutputs the current table for the device in a format that can be fed back in using the\ncreate or load commands.  With --target, only information relating  to  the  specified\ntarget type is displayed.  Real encryption keys are suppressed in the table output for\ncrypt  and  integrity  targets unless the --showkeys parameter is supplied. Kernel key\nreferences prefixed with : are not affected by the parameter and get displayed  always\n(crypt  target  only).   With --concise, the output is presented concisely on a single\nline.  Commas then separate the name, uuid, minor device number, flags ('ro' or  'rw')\nand  the table (if present). Semi-colons separate devices. Backslashes escape any com‐\nmas, semi-colons or backslashes.  See CONCISE FORMAT below.\n",
                "subsections": [
                    {
                        "name": "targets",
                        "content": "Displays the names and versions of the currently-loaded targets.\n\nudevcomplete cookie\nWake any processes that are waiting for udev  to  complete  processing  the  specified\ncookie.\n\nudevcompleteall [ageinminutes]\nRemove all cookies older than the specified number of minutes.  Any process waiting on\na cookie will be resumed immediately.\n"
                    },
                    {
                        "name": "udevcookie",
                        "content": "List  all  existing  cookies. Cookies are system-wide semaphores with keys prefixed by\ntwo predefined bytes (0x0D4D).\n"
                    },
                    {
                        "name": "udevcreatecookie",
                        "content": "Creates a new cookie to synchronize actions with udev processing.   The  output  is  a\ncookie  value.  Normally we don't need to create cookies since dmsetup creates and de‐\nstroys them for each action automatically. However, we can generate one explicitly  to\ngroup several actions together and use only one cookie instead. We can define a cookie\nto  use  for each relevant command by using --udevcookie option. Alternatively, we can\nexport this value into the environment of the dmsetup process as DMUDEVCOOKIE  vari‐\nable and it will be used automatically with all subsequent commands until it is unset.\nInvoking  this  command  will create system-wide semaphore that needs to be cleaned up\nexplicitly by calling udevreleasecookie command.\n\nudevflags cookie\nParses given cookie value and extracts any udev control flags encoded.  The output  is\nin  environment key format that is suitable for use in udev rules. If the flag has its\nsymbolic  name  assigned  then  the  output   is   DMUDEVFLAG<flagname>   =   '1',\nDMUDEVFLAG<flagposition> = '1' otherwise.  Subsystem udev flags don't have symbolic\nnames assigned and these ones are always reported as DMSUBSYSTEMUDEVFLAG<flagposi‐\ntion> = '1'. There are 16 udev flags altogether.\n\nudevreleasecookie [cookie]\nWaits  for  all  pending  udev processing bound to given cookie value and clean up the\ncookie with underlying semaphore. If the cookie is not  given  directly,  the  command\nwill try to use a value defined by DMUDEVCOOKIE environment variable.\n"
                    },
                    {
                        "name": "version",
                        "content": "Outputs version information.\n\nwait [--noflush] devicename [eventnr]\nSleeps  until  the  event counter for devicename exceeds eventnr.  Use -v to see the\nevent number returned.  To wait until the next event is triggered, use  info  to  find\nthe  last  event number.  With --noflush, the thin target (from version 1.3.0) doesn't\ncommit any outstanding changes to disk before reporting its statistics.\n\nwipetable devicename...  [-f|--force] [--noflush] [--nolockfs]\nWait for any I/O in-flight through the device to complete, then replace the table with\na new table that fails any new I/O sent to the device.  If successful, this should re‐\nlease any devices held open by the device's table(s).\n"
                    }
                ]
            },
            "TABLE FORMAT": {
                "content": "Each line of the table specifies a single target and is of the form:\n\nlogicalstartsector numsectors targettype targetargs\n\nSimple target types and target args include:\n\nlinear destinationdevice startsector\nThe traditional linear mapping.\n\nstriped numstripes chunksize [destination startsector]...\nCreates a striped area.\ne.g. striped 2 32 /dev/hda1 0 /dev/hdb1 0 will map the first chunk (16k) as follows:\n\nLV chunk 1 → hda1, chunk 1\nLV chunk 2 → hdb1, chunk 1\nLV chunk 3 → hda1, chunk 2\nLV chunk 4 → hdb1, chunk 2\netc.\n\nerror  Errors any I/O that goes to this area.  Useful for testing  or  for  creating  devices\nwith holes in them.\n\nzero   Returns blocks of zeroes on reads.  Any data written is discarded silently.  This is a\nblock-device  equivalent  of  the  /dev/zero  character-device  data sink described in\nnull(4).\n\nMore complex targets include:\n\ncache  Improves performance of a block device (eg, a spindle) by dynamically  migrating  some\nof its data to a faster smaller device (eg, an SSD).\n\ncrypt  Transparent encryption of block devices using the kernel crypto API.\n\ndelay  Delays reads and/or writes to different devices.  Useful for testing.\n\nflakey Creates a similar mapping to the linear target but exhibits unreliable behaviour peri‐\nodically.  Useful for simulating failing devices when testing.\n\nmirror Mirrors data across two or more devices.\n",
                "subsections": [
                    {
                        "name": "multipath",
                        "content": "Mediates access through multiple paths to the same device.\n\nraid   Offers an interface to the kernel's software raid driver, md.\n"
                    },
                    {
                        "name": "snapshot",
                        "content": "Supports snapshots of devices.\n\nthin, thin-pool\nSupports thin provisioning of devices and also provides a better snapshot support.\n\nTo  find  out more about the various targets and their table formats and status lines, please\nread the files in the Documentation/device-mapper directory in the kernel source tree.  (Your\ndistribution might include a copy of this information in the documentation directory for  the\ndevice-mapper package.)\n"
                    }
                ]
            },
            "EXAMPLES": {
                "content": "# A simple linear read-only device\ntest-linear-small,,,ro,0 2097152 linear /dev/loop0 0,2097152 2097152 linear /dev/loop1 0\n# Two linear devices\ntest-linear-small,,,,0 2097152 linear /dev/loop0 0;test-linear-large,,,,0 2097152 linear\n/dev/loop1 0, 2097152 2097152 linear /dev/loop2 0\n",
                "subsections": []
            },
            "CONCISE FORMAT": {
                "content": "A concise representation of one of more devices.\n\n- A comma separates the fields of each device.\n- A semi-colon separates devices.\n\nThe representation of a device takes the form:\n<name>,<uuid>,<minor>,<flags>,<table>[,<table>+][;<devname>,<uuid>,\n<minor>,<flags>,<table>[,<table>+]]\n\nThe fields are:\n\nname   The name of the device.\n\nuuid   The UUID of the device (or empty).\n\nminor  The minor number of the device.  If empty, the kernel assigns a suitable minor number.\n\nflags  Supported flags are:\nro Sets the table being loaded for the device read-only\nrw Sets the table being loaded for the device read-write (default)\n\ntable  One line of the table. See TABLE FORMAT above.\n",
                "subsections": []
            },
            "ENVIRONMENT VARIABLES": {
                "content": "DMDEVDIR\nThe device directory name.  Defaults to \"/dev\" and must be an absolute path.\n\nDMUDEVCOOKIE\nA  cookie to use for all relevant commands to synchronize with udev processing.  It is\nan alternative to using --udevcookie option.\n\nDMDEFAULTNAMEMANGLINGMODE\nA default mangling mode. Defaults to \"auto\" and it is an alternative to  using  --man‐\nglename option.\n",
                "subsections": []
            },
            "AUTHORS": {
                "content": "Original version: Joe Thornber <thornber@redhat.com>\n",
                "subsections": []
            },
            "SEE ALSO": {
                "content": "dmstats(8), udev(7), udevadm(8)\n\nLVM2 resource page: \u001b]8;;https://www.sourceware.org/lvm2\u001b\\https://www.sourceware.org/lvm2\u001b]8;;\u001b\\\nDevice-mapper resource page: \u001b]8;;http://sources.redhat.com/dm\u001b\\http://sources.redhat.com/dm\u001b]8;;\u001b\\\n\nLinux                                        Apr 06 2006                                  DMSETUP(8)",
                "subsections": []
            }
        }
    }
}