€•Œsphinx.addnodes”Œdocument”“”)�”}”(Œ rawsource”Œ”Œchildren”]”(Œ translations”Œ LanguagesNode”“”)�”}”(hhh]”(hŒ pending_xref”“”)�”}”(hhh]”Œdocutils.nodes”ŒText”“”ŒChinese (Simplified)”…”�”}”Œparent”hsbaŒ attributes”}”(Œids”]”Œclasses”]”Œnames”]”Œdupnames”]”Œbackrefs”]”Œ refdomain”Œstd”Œreftype”Œdoc”Œ reftarget”Œ?/translations/zh_CN/admin-guide/device-mapper/thin-provisioning”Œmodname”NŒ classname”NŒ refexplicit”ˆuŒtagname”hhh ubh)�”}”(hhh]”hŒChinese (Traditional)”…”�”}”hh2sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ?/translations/zh_TW/admin-guide/device-mapper/thin-provisioning”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒItalian”…”�”}”hhFsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ?/translations/it_IT/admin-guide/device-mapper/thin-provisioning”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒJapanese”…”�”}”hhZsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ?/translations/ja_JP/admin-guide/device-mapper/thin-provisioning”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒKorean”…”�”}”hhnsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ?/translations/ko_KR/admin-guide/device-mapper/thin-provisioning”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒPortuguese (Brazilian)”…”�”}”hh‚sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ?/translations/pt_BR/admin-guide/device-mapper/thin-provisioning”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒSpanish”…”�”}”hh–sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ?/translations/sp_SP/admin-guide/device-mapper/thin-provisioning”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubeh}”(h]”h ]”h"]”h$]”h&]”Œcurrent_language”ŒEnglish”uh1h hhŒ _document”hŒsource”NŒline”NubhŒsection”“”)�”}”(hhh]”(hŒtitle”“”)�”}”(hŒThin provisioning”h]”hŒThin provisioning”…”�”}”(hh¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhh·h²hh³ŒY/var/lib/git/docbuild/linux/Documentation/admin-guide/device-mapper/thin-provisioning.rst”h´Kubh¶)�”}”(hhh]”(h»)�”}”(hŒ Introduction”h]”hŒ Introduction”…”�”}”(hhÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhhËh²hh³hÊh´KubhŒ paragraph”“”)�”}”(hŒzThis document describes a collection of device-mapper targets that between them implement thin-provisioning and snapshots.”h]”hŒzThis document describes a collection of device-mapper targets that between them implement thin-provisioning and snapshots.”…”�”}”(hhÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´KhhËh²hubhÝ)�”}”(hXThe main highlight of this implementation, compared to the previous implementation of snapshots, is that it allows many virtual devices to be stored on the same data volume. This simplifies administration and allows the sharing of data between volumes, thus reducing disk usage.”h]”hXThe main highlight of this implementation, compared to the previous implementation of snapshots, is that it allows many virtual devices to be stored on the same data volume. This simplifies administration and allows the sharing of data between volumes, thus reducing disk usage.”…”�”}”(hhìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´K hhËh²hubhÝ)�”}”(hX•Another significant feature is support for an arbitrary depth of recursive snapshots (snapshots of snapshots of snapshots ...). The previous implementation of snapshots did this by chaining together lookup tables, and so performance was O(depth). This new implementation uses a single data structure to avoid this degradation with depth. Fragmentation may still be an issue, however, in some scenarios.”h]”hX•Another significant feature is support for an arbitrary depth of recursive snapshots (snapshots of snapshots of snapshots ...). The previous implementation of snapshots did this by chaining together lookup tables, and so performance was O(depth). This new implementation uses a single data structure to avoid this degradation with depth. Fragmentation may still be an issue, however, in some scenarios.”…”�”}”(hhúh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´KhhËh²hubhÝ)�”}”(hŒiMetadata is stored on a separate device from data, giving the administrator some freedom, for example to:”h]”hŒiMetadata is stored on a separate device from data, giving the administrator some freedom, for example to:”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´KhhËh²hubhŒ bullet_list”“”)�”}”(hhh]”(hŒ list_item”“”)�”}”(hŒeImprove metadata resilience by storing metadata on a mirrored volume but data on a non-mirrored one. ”h]”hÝ)�”}”(hŒdImprove metadata resilience by storing metadata on a mirrored volume but data on a non-mirrored one.”h]”hŒdImprove metadata resilience by storing metadata on a mirrored volume but data on a non-mirrored one.”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´Khjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjh²hh³hÊh´Nubj)�”}”(hŒ4Improve performance by storing the metadata on SSD. ”h]”hÝ)�”}”(hŒ3Improve performance by storing the metadata on SSD.”h]”hŒ3Improve performance by storing the metadata on SSD.”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´Khj5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjh²hh³hÊh´Nubeh}”(h]”h ]”h"]”h$]”h&]”Œbullet”Œ-”uh1jh³hÊh´KhhËh²hubeh}”(h]”Œ introduction”ah ]”h"]”Œ introduction”ah$]”h&]”uh1hµhh·h²hh³hÊh´Kubh¶)�”}”(hhh]”(h»)�”}”(hŒStatus”h]”hŒStatus”…”�”}”(hj`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj]h²hh³hÊh´K!ubhÝ)�”}”(hŒ´These targets are considered safe for production use. But different use cases will have different performance characteristics, for example due to fragmentation of the data volume.”h]”hŒ´These targets are considered safe for production use. But different use cases will have different performance characteristics, for example due to fragmentation of the data volume.”…”�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´K#hj]h²hubhÝ)�”}”(hŒ–If you find this software is not performing as expected please mail dm-devel@redhat.com with details and we'll try our best to improve things for you.”h]”(hŒDIf you find this software is not performing as expected please mail ”…”�”}”(hj|h²hh³Nh´NubhŒ reference”“”)�”}”(hŒdm-devel@redhat.com”h]”hŒdm-devel@redhat.com”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œrefuri”Œmailto:dm-devel@redhat.com”uh1j„hj|ubhŒA with details and we’ll try our best to improve things for you.”…”�”}”(hj|h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´K'hj]h²hubhÝ)�”}”(hXUserspace tools for checking and repairing the metadata have been fully developed and are available as 'thin_check' and 'thin_repair'. The name of the package that provides these utilities varies by distribution (on a Red Hat distribution it is named 'device-mapper-persistent-data').”h]”hX)Userspace tools for checking and repairing the metadata have been fully developed and are available as ‘thin_check’ and ‘thin_repair’. The name of the package that provides these utilities varies by distribution (on a Red Hat distribution it is named ‘device-mapper-persistent-data’).”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´K+hj]h²hubeh}”(h]”Œstatus”ah ]”h"]”Œstatus”ah$]”h&]”uh1hµhh·h²hh³hÊh´K!ubh¶)�”}”(hhh]”(h»)�”}”(hŒCookbook”h]”hŒCookbook”…”�”}”(hj¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj¶h²hh³hÊh´K1ubhÝ)�”}”(hŒûThis section describes some quick recipes for using thin provisioning. They use the dmsetup program to control the device-mapper driver directly. End users will be advised to use a higher-level volume manager such as LVM2 once support has been added.”h]”hŒûThis section describes some quick recipes for using thin provisioning. They use the dmsetup program to control the device-mapper driver directly. End users will be advised to use a higher-level volume manager such as LVM2 once support has been added.”…”�”}”(hjÇh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´K3hj¶h²hubh¶)�”}”(hhh]”(h»)�”}”(hŒ Pool device”h]”hŒ Pool device”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjÕh²hh³hÊh´K9ubhÝ)�”}”(hŒ›The pool device ties together the metadata volume and the data volume. It maps I/O linearly to the data volume and updates the metadata via two mechanisms:”h]”hŒ›The pool device ties together the metadata volume and the data volume. It maps I/O linearly to the data volume and updates the metadata via two mechanisms:”…”�”}”(hjæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´K;hjÕh²hubj)�”}”(hhh]”(j)�”}”(hŒ%Function calls from the thin targets ”h]”hÝ)�”}”(hŒ$Function calls from the thin targets”h]”hŒ$Function calls from the thin targets”…”�”}”(hjûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´K?hj÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjôh²hh³hÊh´Nubj)�”}”(hŒpDevice-mapper 'messages' from userspace which control the creation of new virtual devices amongst other things. ”h]”hÝ)�”}”(hŒoDevice-mapper 'messages' from userspace which control the creation of new virtual devices amongst other things.”h]”hŒsDevice-mapper ‘messages’ from userspace which control the creation of new virtual devices amongst other things.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´KAhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjôh²hh³hÊh´Nubeh}”(h]”h ]”h"]”h$]”h&]”jSjTuh1jh³hÊh´K?hjÕh²hubeh}”(h]”Œ pool-device”ah ]”h"]”Œ pool device”ah$]”h&]”uh1hµhj¶h²hh³hÊh´K9ubh¶)�”}”(hhh]”(h»)�”}”(hŒSetting up a fresh pool device”h]”hŒSetting up a fresh pool device”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj5h²hh³hÊh´KEubhÝ)�”}”(hŒÂSetting up a pool device requires a valid metadata device, and a data device. If you do not have an existing metadata device you can make one by zeroing the first 4k to indicate empty metadata.”h]”hŒÂSetting up a pool device requires a valid metadata device, and a data device. If you do not have an existing metadata device you can make one by zeroing the first 4k to indicate empty metadata.”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´KGhj5h²hubhŒ block_quote”“”)�”}”(hŒ1dd if=/dev/zero of=$metadata_dev bs=4096 count=1 ”h]”hÝ)�”}”(hŒ0dd if=/dev/zero of=$metadata_dev bs=4096 count=1”h]”hŒ0dd if=/dev/zero of=$metadata_dev bs=4096 count=1”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´KKhjVubah}”(h]”h ]”h"]”h$]”h&]”uh1jTh³hÊh´KKhj5h²hubhÝ)�”}”(hŒÚThe amount of metadata you need will vary according to how many blocks are shared between thin devices (i.e. through snapshots). If you have less sharing than average you'll need a larger-than-average metadata device.”h]”hŒÜThe amount of metadata you need will vary according to how many blocks are shared between thin devices (i.e. through snapshots). If you have less sharing than average you’ll need a larger-than-average metadata device.”…”�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´KMhj5h²hubhÝ)�”}”(hX6As a guide, we suggest you calculate the number of bytes to use in the metadata device as 48 * $data_dev_size / $data_block_size but round it up to 2MiB if the answer is smaller. If you're creating large numbers of snapshots which are recording large amounts of change, you may find you need to increase this.”h]”hX8As a guide, we suggest you calculate the number of bytes to use in the metadata device as 48 * $data_dev_size / $data_block_size but round it up to 2MiB if the answer is smaller. If you’re creating large numbers of snapshots which are recording large amounts of change, you may find you need to increase this.”…”�”}”(hj|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´KQhj5h²hubhÝ)�”}”(hŒ}The largest size supported is 16GiB: If the device is larger, a warning will be issued and the excess space will not be used.”h]”hŒ}The largest size supported is 16GiB: If the device is larger, a warning will be issued and the excess space will not be used.”…”�”}”(hjŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´KWhj5h²hubeh}”(h]”Œsetting-up-a-fresh-pool-device”ah ]”h"]”Œsetting up a fresh pool device”ah$]”h&]”uh1hµhj¶h²hh³hÊh´KEubh¶)�”}”(hhh]”(h»)�”}”(hŒReloading a pool table”h]”hŒReloading a pool table”…”�”}”(hj£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj h²hh³hÊh´K[ubhÝ)�”}”(hX$You may reload a pool's table, indeed this is how the pool is resized if it runs out of space. (N.B. While specifying a different metadata device when reloading is not forbidden at the moment, things will go wrong if it does not route I/O to exactly the same on-disk location as previously.)”h]”hX&You may reload a pool’s table, indeed this is how the pool is resized if it runs out of space. (N.B. While specifying a different metadata device when reloading is not forbidden at the moment, things will go wrong if it does not route I/O to exactly the same on-disk location as previously.)”…”�”}”(hj±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´K]hj h²hubeh}”(h]”Œreloading-a-pool-table”ah ]”h"]”Œreloading a pool table”ah$]”h&]”uh1hµhj¶h²hh³hÊh´K[ubh¶)�”}”(hhh]”(h»)�”}”(hŒUsing an existing pool device”h]”hŒUsing an existing pool device”…”�”}”(hjÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjÇh²hh³hÊh´KdubhŒ literal_block”“”)�”}”(hŒ€dmsetup create pool \ --table "0 20971520 thin-pool $metadata_dev $data_dev \ $data_block_size $low_water_mark"”h]”hŒ€dmsetup create pool \ --table "0 20971520 thin-pool $metadata_dev $data_dev \ $data_block_size $low_water_mark"”…”�”}”hjÚsbah}”(h]”h ]”h"]”h$]”h&]”Œ xml:space”Œpreserve”uh1jØh³hÊh´KhhjÇh²hubhÝ)�”}”(hXJ$data_block_size gives the smallest unit of disk space that can be allocated at a time expressed in units of 512-byte sectors. $data_block_size must be between 128 (64KiB) and 2097152 (1GiB) and a multiple of 128 (64KiB). $data_block_size cannot be changed after the thin-pool is created. People primarily interested in thin provisioning may want to use a value such as 1024 (512KiB). People doing lots of snapshotting may want a smaller value such as 128 (64KiB). If you are not zeroing newly-allocated data, a larger $data_block_size in the region of 262144 (128MiB) is suggested.”h]”hXJ$data_block_size gives the smallest unit of disk space that can be allocated at a time expressed in units of 512-byte sectors. $data_block_size must be between 128 (64KiB) and 2097152 (1GiB) and a multiple of 128 (64KiB). $data_block_size cannot be changed after the thin-pool is created. People primarily interested in thin provisioning may want to use a value such as 1024 (512KiB). People doing lots of snapshotting may want a smaller value such as 128 (64KiB). If you are not zeroing newly-allocated data, a larger $data_block_size in the region of 262144 (128MiB) is suggested.”…”�”}”(hjêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´KlhjÇh²hubhÝ)�”}”(hX $low_water_mark is expressed in blocks of size $data_block_size. If free space on the data device drops below this level then a dm event will be triggered which a userspace daemon should catch allowing it to extend the pool device. Only one such event will be sent.”h]”hX $low_water_mark is expressed in blocks of size $data_block_size. If free space on the data device drops below this level then a dm event will be triggered which a userspace daemon should catch allowing it to extend the pool device. Only one such event will be sent.”…”�”}”(hjøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´KvhjÇh²hubhÝ)�”}”(hŒûNo special event is triggered if a just resumed device's free space is below the low water mark. However, resuming a device always triggers an event; a userspace daemon should verify that free space exceeds the low water mark when handling this event.”h]”hŒýNo special event is triggered if a just resumed device’s free space is below the low water mark. However, resuming a device always triggers an event; a userspace daemon should verify that free space exceeds the low water mark when handling this event.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´K{hjÇh²hubhÝ)�”}”(hŒ•A low water mark for the metadata device is maintained in the kernel and will trigger a dm event if free space on the metadata device drops below it.”h]”hŒ•A low water mark for the metadata device is maintained in the kernel and will trigger a dm event if free space on the metadata device drops below it.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´K€hjÇh²hubeh}”(h]”Œusing-an-existing-pool-device”ah ]”h"]”Œusing an existing pool device”ah$]”h&]”uh1hµhj¶h²hh³hÊh´Kdubh¶)�”}”(hhh]”(h»)�”}”(hŒUpdating on-disk metadata”h]”hŒUpdating on-disk metadata”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj*h²hh³hÊh´K…ubhÝ)�”}”(hXeOn-disk metadata is committed every time a FLUSH or FUA bio is written. If no such requests are made then commits will occur every second. This means the thin-provisioning target behaves like a physical disk that has a volatile write cache. If power is lost you may lose some recent writes. The metadata should always be consistent in spite of any crash.”h]”hXeOn-disk metadata is committed every time a FLUSH or FUA bio is written. If no such requests are made then commits will occur every second. This means the thin-provisioning target behaves like a physical disk that has a volatile write cache. If power is lost you may lose some recent writes. The metadata should always be consistent in spite of any crash.”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´K‡hj*h²hubhÝ)�”}”(hXÊIf data space is exhausted the pool will either error or queue IO according to the configuration (see: error_if_no_space). If metadata space is exhausted or a metadata operation fails: the pool will error IO until the pool is taken offline and repair is performed to 1) fix any potential inconsistencies and 2) clear the flag that imposes repair. Once the pool's metadata device is repaired it may be resized, which will allow the pool to return to normal operation. Note that if a pool is flagged as needing repair, the pool's data and metadata devices cannot be resized until repair is performed. It should also be noted that when the pool's metadata space is exhausted the current metadata transaction is aborted. Given that the pool will cache IO whose completion may have already been acknowledged to upper IO layers (e.g. filesystem) it is strongly suggested that consistency checks (e.g. fsck) be performed on those layers when repair of the pool is required.”h]”hXÐIf data space is exhausted the pool will either error or queue IO according to the configuration (see: error_if_no_space). If metadata space is exhausted or a metadata operation fails: the pool will error IO until the pool is taken offline and repair is performed to 1) fix any potential inconsistencies and 2) clear the flag that imposes repair. Once the pool’s metadata device is repaired it may be resized, which will allow the pool to return to normal operation. Note that if a pool is flagged as needing repair, the pool’s data and metadata devices cannot be resized until repair is performed. It should also be noted that when the pool’s metadata space is exhausted the current metadata transaction is aborted. Given that the pool will cache IO whose completion may have already been acknowledged to upper IO layers (e.g. filesystem) it is strongly suggested that consistency checks (e.g. fsck) be performed on those layers when repair of the pool is required.”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´K�hj*h²hubeh}”(h]”Œupdating-on-disk-metadata”ah ]”h"]”Œupdating on-disk metadata”ah$]”h&]”uh1hµhj¶h²hh³hÊh´K…ubh¶)�”}”(hhh]”(h»)�”}”(hŒThin provisioning”h]”hŒThin provisioning”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj_h²hh³hÊh´KžubhŒenumerated_list”“”)�”}”(hhh]”j)�”}”(hŒ*Creating a new thinly-provisioned volume. ”h]”hÝ)�”}”(hŒ)Creating a new thinly-provisioned volume.”h]”hŒ)Creating a new thinly-provisioned volume.”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´K hjuubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjrh²hh³hÊh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œenumtype”Œ lowerroman”Œprefix”hŒsuffix”Œ)”uh1jphj_h²hh³hÊh´K ubjU)�”}”(hX}To create a new thinly- provisioned volume you must send a message to an active pool device, /dev/mapper/pool in this example:: dmsetup message /dev/mapper/pool 0 "create_thin 0" Here '0' is an identifier for the volume, a 24-bit number. It's up to the caller to allocate and manage these identifiers. If the identifier is already in use, the message will fail with -EEXIST. ”h]”(hÝ)�”}”(hŒTo create a new thinly- provisioned volume you must send a message to an active pool device, /dev/mapper/pool in this example::”h]”hŒ~To create a new thinly- provisioned volume you must send a message to an active pool device, /dev/mapper/pool in this example:”…”�”}”(hjœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´K¢hj˜ubjÙ)�”}”(hŒ2dmsetup message /dev/mapper/pool 0 "create_thin 0"”h]”hŒ2dmsetup message /dev/mapper/pool 0 "create_thin 0"”…”�”}”hjªsbah}”(h]”h ]”h"]”h$]”h&]”jèjéuh1jØh³hÊh´K¥hj˜ubhÝ)�”}”(hŒÅHere '0' is an identifier for the volume, a 24-bit number. It's up to the caller to allocate and manage these identifiers. If the identifier is already in use, the message will fail with -EEXIST.”h]”hŒËHere ‘0’ is an identifier for the volume, a 24-bit number. It’s up to the caller to allocate and manage these identifiers. If the identifier is already in use, the message will fail with -EEXIST.”…”�”}”(hj¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´K§hj˜ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jTh³hÊh´K¢hj_h²hubjq)�”}”(hhh]”j)�”}”(hŒ#Using a thinly-provisioned volume. ”h]”hÝ)�”}”(hŒ"Using a thinly-provisioned volume.”h]”hŒ"Using a thinly-provisioned volume.”…”�”}”(hjÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´K«hjÏubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÌh²hh³hÊh´Nubah}”(h]”h ]”h"]”h$]”h&]”j“j”j•hj–j—Œstart”Kuh1jphj_h²hh³hÊh´K«ubjU)�”}”(hŒÂThinly-provisioned volumes are activated using the 'thin' target:: dmsetup create thin --table "0 2097152 thin /dev/mapper/pool 0" The last parameter is the identifier for the thinp device. ”h]”(hÝ)�”}”(hŒBThinly-provisioned volumes are activated using the 'thin' target::”h]”hŒEThinly-provisioned volumes are activated using the ‘thin’ target:”…”�”}”(hjòh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´K­hjîubjÙ)�”}”(hŒ?dmsetup create thin --table "0 2097152 thin /dev/mapper/pool 0"”h]”hŒ?dmsetup create thin --table "0 2097152 thin /dev/mapper/pool 0"”…”�”}”hjsbah}”(h]”h ]”h"]”h$]”h&]”jèjéuh1jØh³hÊh´K¯hjîubhÝ)�”}”(hŒ:The last parameter is the identifier for the thinp device.”h]”hŒ:The last parameter is the identifier for the thinp device.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´K±hjîubeh}”(h]”h ]”h"]”h$]”h&]”uh1jTh³hÊh´K­hj_h²hubeh}”(h]”Œid1”ah ]”h"]”h$]”Œthin provisioning”ah&]”uh1hµhj¶h²hh³hÊh´KžŒ referenced”Kubh¶)�”}”(hhh]”(h»)�”}”(hŒInternal snapshots”h]”hŒInternal snapshots”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj+h²hh³hÊh´K´ubjq)�”}”(hhh]”j)�”}”(hŒCreating an internal snapshot. ”h]”hÝ)�”}”(hŒCreating an internal snapshot.”h]”hŒCreating an internal snapshot.”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´K¶hj?ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj<h²hh³hÊh´Nubah}”(h]”h ]”h"]”h$]”h&]”j“j”j•hj–j—uh1jphj+h²hh³hÊh´K¶ubjU)�”}”(hXåSnapshots are created with another message to the pool. N.B. If the origin device that you wish to snapshot is active, you must suspend it before creating the snapshot to avoid corruption. This is NOT enforced at the moment, so please be careful! :: dmsetup suspend /dev/mapper/thin dmsetup message /dev/mapper/pool 0 "create_snap 1 0" dmsetup resume /dev/mapper/thin Here '1' is the identifier for the volume, a 24-bit number. '0' is the identifier for the origin device. ”h]”(hÝ)�”}”(hŒ7Snapshots are created with another message to the pool.”h]”hŒ7Snapshots are created with another message to the pool.”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´K¸hj]ubhÝ)�”}”(hŒ¿N.B. If the origin device that you wish to snapshot is active, you must suspend it before creating the snapshot to avoid corruption. This is NOT enforced at the moment, so please be careful!”h]”hŒ¿N.B. If the origin device that you wish to snapshot is active, you must suspend it before creating the snapshot to avoid corruption. This is NOT enforced at the moment, so please be careful!”…”�”}”(hjoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´Kºhj]ubjÙ)�”}”(hŒudmsetup suspend /dev/mapper/thin dmsetup message /dev/mapper/pool 0 "create_snap 1 0" dmsetup resume /dev/mapper/thin”h]”hŒudmsetup suspend /dev/mapper/thin dmsetup message /dev/mapper/pool 0 "create_snap 1 0" dmsetup resume /dev/mapper/thin”…”�”}”hj}sbah}”(h]”h ]”h"]”h$]”h&]”jèjéuh1jØh³hÊh´KÀhj]ubhÝ)�”}”(hŒiHere '1' is the identifier for the volume, a 24-bit number. '0' is the identifier for the origin device.”h]”hŒqHere ‘1’ is the identifier for the volume, a 24-bit number. ‘0’ is the identifier for the origin device.”…”�”}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´KÄhj]ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jTh³hÊh´K¸hj+h²hubjq)�”}”(hhh]”j)�”}”(hŒUsing an internal snapshot. ”h]”hÝ)�”}”(hŒUsing an internal snapshot.”h]”hŒUsing an internal snapshot.”…”�”}”(hj¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´KÇhj¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjŸh²hh³hÊh´Nubah}”(h]”h ]”h"]”h$]”h&]”j“j”j•hj–j—jíKuh1jphj+h²hh³hÊh´KÇubjU)�”}”(hX1Once created, the user doesn't have to worry about any connection between the origin and the snapshot. Indeed the snapshot is no different from any other thinly-provisioned device and can be snapshotted itself via the same method. It's perfectly legal to have only one of them active, and there's no ordering requirement on activating or removing them both. (This differs from conventional device-mapper snapshots.) Activate it exactly the same way as any other thinly-provisioned volume:: dmsetup create snap --table "0 2097152 thin /dev/mapper/pool 1" ”h]”(hÝ)�”}”(hX¢Once created, the user doesn't have to worry about any connection between the origin and the snapshot. Indeed the snapshot is no different from any other thinly-provisioned device and can be snapshotted itself via the same method. It's perfectly legal to have only one of them active, and there's no ordering requirement on activating or removing them both. (This differs from conventional device-mapper snapshots.)”h]”hX¨Once created, the user doesn’t have to worry about any connection between the origin and the snapshot. Indeed the snapshot is no different from any other thinly-provisioned device and can be snapshotted itself via the same method. It’s perfectly legal to have only one of them active, and there’s no ordering requirement on activating or removing them both. (This differs from conventional device-mapper snapshots.)”…”�”}”(hjÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´KÉhjÀubhÝ)�”}”(hŒIActivate it exactly the same way as any other thinly-provisioned volume::”h]”hŒHActivate it exactly the same way as any other thinly-provisioned volume:”…”�”}”(hjÒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´KÑhjÀubjÙ)�”}”(hŒ?dmsetup create snap --table "0 2097152 thin /dev/mapper/pool 1"”h]”hŒ?dmsetup create snap --table "0 2097152 thin /dev/mapper/pool 1"”…”�”}”hjàsbah}”(h]”h ]”h"]”h$]”h&]”jèjéuh1jØh³hÊh´KÓhjÀubeh}”(h]”h ]”h"]”h$]”h&]”uh1jTh³hÊh´KÉhj+h²hubeh}”(h]”Œinternal-snapshots”ah ]”h"]”Œinternal snapshots”ah$]”h&]”uh1hµhj¶h²hh³hÊh´K´ubh¶)�”}”(hhh]”(h»)�”}”(hŒExternal snapshots”h]”hŒExternal snapshots”…”�”}”(hjÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjüh²hh³hÊh´KÖubhÝ)�”}”(hŒíYou can use an external **read only** device as an origin for a thinly-provisioned volume. Any read to an unprovisioned area of the thin device will be passed through to the origin. Writes trigger the allocation of new blocks as usual.”h]”(hŒYou can use an external ”…”�”}”(hj h²hh³Nh´NubhŒstrong”“”)�”}”(hŒ **read only**”h]”hŒ read only”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj ubhŒÈ device as an origin for a thinly-provisioned volume. Any read to an unprovisioned area of the thin device will be passed through to the origin. Writes trigger the allocation of new blocks as usual.”…”�”}”(hj h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´KØhjüh²hubhÝ)�”}”(hŒ¥One use case for this is VM hosts that want to run guests on thinly-provisioned volumes but have the base image on another device (possibly shared between many VMs).”h]”hŒ¥One use case for this is VM hosts that want to run guests on thinly-provisioned volumes but have the base image on another device (possibly shared between many VMs).”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´KÝhjüh²hubhÝ)�”}”(hŒžYou must not write to the origin device if you use this technique! Of course, you may write to the thin device and take internal snapshots of the thin volume.”h]”hŒžYou must not write to the origin device if you use this technique! Of course, you may write to the thin device and take internal snapshots of the thin volume.”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´Káhjüh²hubjq)�”}”(hhh]”j)�”}”(hŒ*Creating a snapshot of an external device ”h]”hÝ)�”}”(hŒ)Creating a snapshot of an external device”h]”hŒ)Creating a snapshot of an external device”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´KåhjNubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjKh²hh³hÊh´Nubah}”(h]”h ]”h"]”h$]”h&]”j“j”j•hj–j—uh1jphjüh²hh³hÊh´KåubjU)�”}”(hŒ’This is the same as creating a thin device. You don't mention the origin at this stage. :: dmsetup message /dev/mapper/pool 0 "create_thin 0" ”h]”(hÝ)�”}”(hŒWThis is the same as creating a thin device. You don't mention the origin at this stage.”h]”hŒYThis is the same as creating a thin device. You don’t mention the origin at this stage.”…”�”}”(hjph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´KçhjlubjÙ)�”}”(hŒ2dmsetup message /dev/mapper/pool 0 "create_thin 0"”h]”hŒ2dmsetup message /dev/mapper/pool 0 "create_thin 0"”…”�”}”hj~sbah}”(h]”h ]”h"]”h$]”h&]”jèjéuh1jØh³hÊh´Kìhjlubeh}”(h]”h ]”h"]”h$]”h&]”uh1jTh³hÊh´Kçhjüh²hubjq)�”}”(hhh]”j)�”}”(hŒ(Using a snapshot of an external device. ”h]”hÝ)�”}”(hŒ'Using a snapshot of an external device.”h]”hŒ'Using a snapshot of an external device.”…”�”}”(hj™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´Kîhj•ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj’h²hh³hÊh´Nubah}”(h]”h ]”h"]”h$]”h&]”j“j”j•hj–j—jíKuh1jphjüh²hh³hÊh´KîubjU)�”}”(hŒøAppend an extra parameter to the thin target specifying the origin:: dmsetup create snap --table "0 2097152 thin /dev/mapper/pool 0 /dev/image" N.B. All descendants (internal snapshots) of this snapshot require the same extra origin parameter. ”h]”(hÝ)�”}”(hŒDAppend an extra parameter to the thin target specifying the origin::”h]”hŒCAppend an extra parameter to the thin target specifying the origin:”…”�”}”(hj·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´Kðhj³ubjÙ)�”}”(hŒJdmsetup create snap --table "0 2097152 thin /dev/mapper/pool 0 /dev/image"”h]”hŒJdmsetup create snap --table "0 2097152 thin /dev/mapper/pool 0 /dev/image"”…”�”}”hjÅsbah}”(h]”h ]”h"]”h$]”h&]”jèjéuh1jØh³hÊh´Kòhj³ubhÝ)�”}”(hŒcN.B. All descendants (internal snapshots) of this snapshot require the same extra origin parameter.”h]”hŒcN.B. All descendants (internal snapshots) of this snapshot require the same extra origin parameter.”…”�”}”(hjÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´Kôhj³ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jTh³hÊh´Kðhjüh²hubeh}”(h]”Œexternal-snapshots”ah ]”h"]”Œexternal snapshots”ah$]”h&]”uh1hµhj¶h²hh³hÊh´KÖubh¶)�”}”(hhh]”(h»)�”}”(hŒ Deactivation”h]”hŒ Deactivation”…”�”}”(hjòh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjïh²hh³hÊh´KøubhÝ)�”}”(hŒKAll devices using a pool must be deactivated before the pool itself can be.”h]”hŒKAll devices using a pool must be deactivated before the pool itself can be.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´Kúhjïh²hubjÙ)�”}”(hŒ;dmsetup remove thin dmsetup remove snap dmsetup remove pool”h]”hŒ;dmsetup remove thin dmsetup remove snap dmsetup remove pool”…”�”}”hjsbah}”(h]”h ]”h"]”h$]”h&]”jèjéuh1jØh³hÊh´Kÿhjïh²hubeh}”(h]”Œ deactivation”ah ]”h"]”Œ deactivation”ah$]”h&]”uh1hµhj¶h²hh³hÊh´Køubeh}”(h]”Œcookbook”ah ]”h"]”Œcookbook”ah$]”h&]”uh1hµhh·h²hh³hÊh´K1ubh¶)�”}”(hhh]”(h»)�”}”(hŒ Reference”h]”hŒ Reference”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj,h²hh³hÊh´Mubh¶)�”}”(hhh]”(h»)�”}”(hŒ'thin-pool' target”h]”hŒ‘thin-pool’ target”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj=h²hh³hÊh´Mubjq)�”}”(hhh]”(j)�”}”(hX‹Constructor :: thin-pool \ [ []*] Optional feature arguments: skip_block_zeroing: Skip the zeroing of newly-provisioned blocks. ignore_discard: Disable discard support. no_discard_passdown: Don't pass discards down to the underlying data device, but just remove the mapping. read_only: Don't allow any changes to be made to the pool metadata. This mode is only available after the thin-pool has been created and first used in full read/write mode. It cannot be specified on initial thin-pool creation. error_if_no_space: Error IOs, instead of queueing, if no space. Data block size must be between 64KiB (128 sectors) and 1GiB (2097152 sectors) inclusive. ”h]”(hÝ)�”}”(hŒ Constructor”h]”hŒ Constructor”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´M hjQubjU)�”}”(hXi:: thin-pool \ [ []*] Optional feature arguments: skip_block_zeroing: Skip the zeroing of newly-provisioned blocks. ignore_discard: Disable discard support. no_discard_passdown: Don't pass discards down to the underlying data device, but just remove the mapping. read_only: Don't allow any changes to be made to the pool metadata. This mode is only available after the thin-pool has been created and first used in full read/write mode. It cannot be specified on initial thin-pool creation. error_if_no_space: Error IOs, instead of queueing, if no space. Data block size must be between 64KiB (128 sectors) and 1GiB (2097152 sectors) inclusive. ”h]”(jÙ)�”}”(hŒ‰thin-pool \ [ []*]”h]”hŒ‰thin-pool \ [ []*]”…”�”}”hjgsbah}”(h]”h ]”h"]”h$]”h&]”jèjéuh1jØh³hÊh´M hjcubhÝ)�”}”(hŒOptional feature arguments:”h]”hŒOptional feature arguments:”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´MhjcubjU)�”}”(hX?skip_block_zeroing: Skip the zeroing of newly-provisioned blocks. ignore_discard: Disable discard support. no_discard_passdown: Don't pass discards down to the underlying data device, but just remove the mapping. read_only: Don't allow any changes to be made to the pool metadata. This mode is only available after the thin-pool has been created and first used in full read/write mode. It cannot be specified on initial thin-pool creation. error_if_no_space: Error IOs, instead of queueing, if no space. ”h]”hŒdefinition_list”“”)�”}”(hhh]”(hŒdefinition_list_item”“”)�”}”(hŒBskip_block_zeroing: Skip the zeroing of newly-provisioned blocks. ”h]”(hŒterm”“”)�”}”(hŒskip_block_zeroing:”h]”hŒskip_block_zeroing:”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j’h³hÊh´MhjŽubhŒ definition”“”)�”}”(hhh]”hÝ)�”}”(hŒ-Skip the zeroing of newly-provisioned blocks.”h]”hŒ-Skip the zeroing of newly-provisioned blocks.”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´Mhj¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¢hjŽubeh}”(h]”h ]”h"]”h$]”h&]”uh1jŒh³hÊh´Mhj‰ubj�)�”}”(hŒ)ignore_discard: Disable discard support. ”h]”(j“)�”}”(hŒignore_discard:”h]”hŒignore_discard:”…”�”}”(hjÅh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j’h³hÊh´MhjÁubj£)�”}”(hhh]”hÝ)�”}”(hŒDisable discard support.”h]”hŒDisable discard support.”…”�”}”(hjÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´MhjÓubah}”(h]”h ]”h"]”h$]”h&]”uh1j¢hjÁubeh}”(h]”h ]”h"]”h$]”h&]”uh1jŒh³hÊh´Mhj‰ubj�)�”}”(hŒjno_discard_passdown: Don't pass discards down to the underlying data device, but just remove the mapping. ”h]”(j“)�”}”(hŒno_discard_passdown:”h]”hŒno_discard_passdown:”…”�”}”(hjôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j’h³hÊh´Mhjðubj£)�”}”(hhh]”hÝ)�”}”(hŒTDon't pass discards down to the underlying data device, but just remove the mapping.”h]”hŒVDon’t pass discards down to the underlying data device, but just remove the mapping.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´Mhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j¢hjðubeh}”(h]”h ]”h"]”h$]”h&]”uh1jŒh³hÊh´Mhj‰ubj�)�”}”(hŒåread_only: Don't allow any changes to be made to the pool metadata. This mode is only available after the thin-pool has been created and first used in full read/write mode. It cannot be specified on initial thin-pool creation. ”h]”(j“)�”}”(hŒ read_only:”h]”hŒ read_only:”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j’h³hÊh´M!hjubj£)�”}”(hhh]”hÝ)�”}”(hŒÙDon't allow any changes to be made to the pool metadata. This mode is only available after the thin-pool has been created and first used in full read/write mode. It cannot be specified on initial thin-pool creation.”h]”hŒÛDon’t allow any changes to be made to the pool metadata. This mode is only available after the thin-pool has been created and first used in full read/write mode. It cannot be specified on initial thin-pool creation.”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´Mhj1ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¢hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jŒh³hÊh´M!hj‰ubj�)�”}”(hŒ@error_if_no_space: Error IOs, instead of queueing, if no space. ”h]”(j“)�”}”(hŒerror_if_no_space:”h]”hŒerror_if_no_space:”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j’h³hÊh´M$hjNubj£)�”}”(hhh]”hÝ)�”}”(hŒ,Error IOs, instead of queueing, if no space.”h]”hŒ,Error IOs, instead of queueing, if no space.”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´M$hj`ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¢hjNubeh}”(h]”h ]”h"]”h$]”h&]”uh1jŒh³hÊh´M$hj‰ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j‡hjƒubah}”(h]”h ]”h"]”h$]”h&]”uh1jTh³hÊh´MhjcubhÝ)�”}”(hŒYData block size must be between 64KiB (128 sectors) and 1GiB (2097152 sectors) inclusive.”h]”hŒYData block size must be between 64KiB (128 sectors) and 1GiB (2097152 sectors) inclusive.”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´M&hjcubeh}”(h]”h ]”h"]”h$]”h&]”uh1jTh³hÊh´M hjQubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjNh²hh³hÊh´Nubj)�”}”(hX¼ Status :: / / ro|rw|out_of_data_space [no_]discard_passdown [error|queue]_if_no_space needs_check|- metadata_low_watermark transaction id: A 64-bit number used by userspace to help synchronise with metadata from volume managers. used data blocks / total data blocks If the number of free blocks drops below the pool's low water mark a dm event will be sent to userspace. This event is edge-triggered and it will occur only once after each resume so volume manager writers should register for the event and then check the target's status. held metadata root: The location, in blocks, of the metadata root that has been 'held' for userspace read access. '-' indicates there is no held root. discard_passdown|no_discard_passdown Whether or not discards are actually being passed down to the underlying device. When this is enabled when loading the table, it can get disabled if the underlying device doesn't support it. ro|rw|out_of_data_space If the pool encounters certain types of device failures it will drop into a read-only metadata mode in which no changes to the pool metadata (like allocating new blocks) are permitted. In serious cases where even a read-only mode is deemed unsafe no further I/O will be permitted and the status will just contain the string 'Fail'. The userspace recovery tools should then be used. error_if_no_space|queue_if_no_space If the pool runs out of data or metadata space, the pool will either queue or error the IO destined to the data device. The default is to queue the IO until more space is added or the 'no_space_timeout' expires. The 'no_space_timeout' dm-thin-pool module parameter can be used to change this timeout -- it defaults to 60 seconds but may be disabled using a value of 0. needs_check A metadata operation has failed, resulting in the needs_check flag being set in the metadata's superblock. The metadata device must be deactivated and checked/repaired before the thin-pool can be made fully operational again. '-' indicates needs_check is not set. metadata_low_watermark: Value of metadata low watermark in blocks. The kernel sets this value internally but userspace needs to know this value to determine if an event was caused by crossing this threshold. ”h]”(hÝ)�”}”(hŒStatus”h]”hŒStatus”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´M*hj£ubjÙ)�”}”(hŒè / / ro|rw|out_of_data_space [no_]discard_passdown [error|queue]_if_no_space needs_check|- metadata_low_watermark”h]”hŒè / / ro|rw|out_of_data_space [no_]discard_passdown [error|queue]_if_no_space needs_check|- metadata_low_watermark”…”�”}”hjµsbah}”(h]”h ]”h"]”h$]”h&]”jèjéuh1jØh³hÊh´M.hj£ubjˆ)�”}”(hhh]”(j�)�”}”(hŒjtransaction id: A 64-bit number used by userspace to help synchronise with metadata from volume managers. ”h]”(j“)�”}”(hŒtransaction id:”h]”hŒtransaction id:”…”�”}”(hjÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j’h³hÊh´M5hjÆubj£)�”}”(hhh]”hÝ)�”}”(hŒYA 64-bit number used by userspace to help synchronise with metadata from volume managers.”h]”hŒYA 64-bit number used by userspace to help synchronise with metadata from volume managers.”…”�”}”(hjÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´M4hjØubah}”(h]”h ]”h"]”h$]”h&]”uh1j¢hjÆubeh}”(h]”h ]”h"]”h$]”h&]”uh1jŒh³hÊh´M5hjÃubj�)�”}”(hX6used data blocks / total data blocks If the number of free blocks drops below the pool's low water mark a dm event will be sent to userspace. This event is edge-triggered and it will occur only once after each resume so volume manager writers should register for the event and then check the target's status. ”h]”(j“)�”}”(hŒ$used data blocks / total data blocks”h]”hŒ$used data blocks / total data blocks”…”�”}”(hjùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j’h³hÊh´M;hjõubj£)�”}”(hhh]”hÝ)�”}”(hXIf the number of free blocks drops below the pool's low water mark a dm event will be sent to userspace. This event is edge-triggered and it will occur only once after each resume so volume manager writers should register for the event and then check the target's status.”h]”hXIf the number of free blocks drops below the pool’s low water mark a dm event will be sent to userspace. This event is edge-triggered and it will occur only once after each resume so volume manager writers should register for the event and then check the target’s status.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´M8hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j¢hjõubeh}”(h]”h ]”h"]”h$]”h&]”uh1jŒh³hÊh´M;hjÃubj�)�”}”(hŒ˜held metadata root: The location, in blocks, of the metadata root that has been 'held' for userspace read access. '-' indicates there is no held root. ”h]”(j“)�”}”(hŒheld metadata root:”h]”hŒheld metadata root:”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j’h³hÊh´M@hj$ubj£)�”}”(hhh]”hÝ)�”}”(hŒƒThe location, in blocks, of the metadata root that has been 'held' for userspace read access. '-' indicates there is no held root.”h]”hŒ‹The location, in blocks, of the metadata root that has been ‘held’ for userspace read access. ‘-’ indicates there is no held root.”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´M>hj6ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¢hj$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jŒh³hÊh´M@hjÃubj�)�”}”(hŒådiscard_passdown|no_discard_passdown Whether or not discards are actually being passed down to the underlying device. When this is enabled when loading the table, it can get disabled if the underlying device doesn't support it. ”h]”(j“)�”}”(hŒ$discard_passdown|no_discard_passdown”h]”hŒ$discard_passdown|no_discard_passdown”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j’h³hÊh´MEhjSubj£)�”}”(hhh]”hÝ)�”}”(hŒ¿Whether or not discards are actually being passed down to the underlying device. When this is enabled when loading the table, it can get disabled if the underlying device doesn't support it.”h]”hŒÁWhether or not discards are actually being passed down to the underlying device. When this is enabled when loading the table, it can get disabled if the underlying device doesn’t support it.”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´MChjeubah}”(h]”h ]”h"]”h$]”h&]”uh1j¢hjSubeh}”(h]”h ]”h"]”h$]”h&]”uh1jŒh³hÊh´MEhjÃubj�)�”}”(hX˜ro|rw|out_of_data_space If the pool encounters certain types of device failures it will drop into a read-only metadata mode in which no changes to the pool metadata (like allocating new blocks) are permitted. In serious cases where even a read-only mode is deemed unsafe no further I/O will be permitted and the status will just contain the string 'Fail'. The userspace recovery tools should then be used. ”h]”(j“)�”}”(hŒro|rw|out_of_data_space”h]”hŒro|rw|out_of_data_space”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j’h³hÊh´MOhj‚ubj£)�”}”(hhh]”(hÝ)�”}”(hŒ¸If the pool encounters certain types of device failures it will drop into a read-only metadata mode in which no changes to the pool metadata (like allocating new blocks) are permitted.”h]”hŒ¸If the pool encounters certain types of device failures it will drop into a read-only metadata mode in which no changes to the pool metadata (like allocating new blocks) are permitted.”…”�”}”(hj—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´MHhj”ubhÝ)�”}”(hŒÅIn serious cases where even a read-only mode is deemed unsafe no further I/O will be permitted and the status will just contain the string 'Fail'. The userspace recovery tools should then be used.”h]”hŒÉIn serious cases where even a read-only mode is deemed unsafe no further I/O will be permitted and the status will just contain the string ‘Fail’. The userspace recovery tools should then be used.”…”�”}”(hj¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´MLhj”ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¢hj‚ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jŒh³hÊh´MOhjÃubj�)�”}”(hX—error_if_no_space|queue_if_no_space If the pool runs out of data or metadata space, the pool will either queue or error the IO destined to the data device. The default is to queue the IO until more space is added or the 'no_space_timeout' expires. The 'no_space_timeout' dm-thin-pool module parameter can be used to change this timeout -- it defaults to 60 seconds but may be disabled using a value of 0. ”h]”(j“)�”}”(hŒ#error_if_no_space|queue_if_no_space”h]”hŒ#error_if_no_space|queue_if_no_space”…”�”}”(hjÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j’h³hÊh´MWhj¿ubj£)�”}”(hhh]”hÝ)�”}”(hXrIf the pool runs out of data or metadata space, the pool will either queue or error the IO destined to the data device. The default is to queue the IO until more space is added or the 'no_space_timeout' expires. The 'no_space_timeout' dm-thin-pool module parameter can be used to change this timeout -- it defaults to 60 seconds but may be disabled using a value of 0.”h]”hXzIf the pool runs out of data or metadata space, the pool will either queue or error the IO destined to the data device. The default is to queue the IO until more space is added or the ‘no_space_timeout’ expires. The ‘no_space_timeout’ dm-thin-pool module parameter can be used to change this timeout -- it defaults to 60 seconds but may be disabled using a value of 0.”…”�”}”(hjÔh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´MRhjÑubah}”(h]”h ]”h"]”h$]”h&]”uh1j¢hj¿ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jŒh³hÊh´MWhjÃubj�)�”}”(hXneeds_check A metadata operation has failed, resulting in the needs_check flag being set in the metadata's superblock. The metadata device must be deactivated and checked/repaired before the thin-pool can be made fully operational again. '-' indicates needs_check is not set. ”h]”(j“)�”}”(hŒ needs_check”h]”hŒ needs_check”…”�”}”(hjòh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j’h³hÊh´M^hjîubj£)�”}”(hhh]”hÝ)�”}”(hX A metadata operation has failed, resulting in the needs_check flag being set in the metadata's superblock. The metadata device must be deactivated and checked/repaired before the thin-pool can be made fully operational again. '-' indicates needs_check is not set.”h]”hXA metadata operation has failed, resulting in the needs_check flag being set in the metadata’s superblock. The metadata device must be deactivated and checked/repaired before the thin-pool can be made fully operational again. ‘-’ indicates needs_check is not set.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´MZhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¢hjîubeh}”(h]”h ]”h"]”h$]”h&]”uh1jŒh³hÊh´M^hjÃubj�)�”}”(hŒÑmetadata_low_watermark: Value of metadata low watermark in blocks. The kernel sets this value internally but userspace needs to know this value to determine if an event was caused by crossing this threshold. ”h]”(j“)�”}”(hŒmetadata_low_watermark:”h]”hŒmetadata_low_watermark:”…”�”}”(hj! h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j’h³hÊh´Mchj ubj£)�”}”(hhh]”hÝ)�”}”(hŒ¸Value of metadata low watermark in blocks. The kernel sets this value internally but userspace needs to know this value to determine if an event was caused by crossing this threshold.”h]”hŒ¸Value of metadata low watermark in blocks. The kernel sets this value internally but userspace needs to know this value to determine if an event was caused by crossing this threshold.”…”�”}”(hj2 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´Mahj/ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¢hj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jŒh³hÊh´MchjÃubeh}”(h]”h ]”h"]”h$]”h&]”uh1j‡hj£ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjNh²hh³Nh´Nubj)�”}”(hŒ Messages ”h]”hÝ)�”}”(hŒMessages”h]”hŒMessages”…”�”}”(hj\ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´MehjX ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjNh²hh³hÊh´Nubeh}”(h]”h ]”h"]”h$]”h&]”j“j”j•hj–j—uh1jphj=h²hh³hÊh´M ubjU)�”}”(hX,create_thin Create a new thinly-provisioned device. is an arbitrary unique 24-bit identifier chosen by the caller. create_snap Create a new snapshot of another thinly-provisioned device. is an arbitrary unique 24-bit identifier chosen by the caller. is the identifier of the thinly-provisioned device of which the new device will be a snapshot. delete Deletes a thin device. Irreversible. set_transaction_id Userland volume managers, such as LVM, need a way to synchronise their external metadata with the internal metadata of the pool target. The thin-pool target offers to store an arbitrary 64-bit transaction id and return it on the target's status line. To avoid races you must provide what you think the current transaction id is when you change it with this compare-and-swap message. reserve_metadata_snap Reserve a copy of the data mapping btree for use by userland. This allows userland to inspect the mappings as they were when this message was executed. Use the pool's status command to get the root block associated with the metadata snapshot. release_metadata_snap Release a previously reserved copy of the data mapping btree. ”h]”jˆ)�”}”(hhh]”(j�)�”}”(hŒ…create_thin Create a new thinly-provisioned device. is an arbitrary unique 24-bit identifier chosen by the caller. ”h]”(j“)�”}”(hŒcreate_thin ”h]”hŒcreate_thin ”…”�”}”(hj� h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j’h³hÊh´Mjhj} ubj£)�”}”(hhh]”hÝ)�”}”(hŒoCreate a new thinly-provisioned device. is an arbitrary unique 24-bit identifier chosen by the caller.”h]”hŒoCreate a new thinly-provisioned device. is an arbitrary unique 24-bit identifier chosen by the caller.”…”�”}”(hj’ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´Mhhj� ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¢hj} ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jŒh³hÊh´Mjhjz ubj�)�”}”(hXcreate_snap Create a new snapshot of another thinly-provisioned device. is an arbitrary unique 24-bit identifier chosen by the caller. is the identifier of the thinly-provisioned device of which the new device will be a snapshot. ”h]”(j“)�”}”(hŒ create_snap ”h]”hŒ create_snap ”…”�”}”(hj° h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j’h³hÊh´Mqhj¬ ubj£)�”}”(hhh]”hÝ)�”}”(hŒîCreate a new snapshot of another thinly-provisioned device. is an arbitrary unique 24-bit identifier chosen by the caller. is the identifier of the thinly-provisioned device of which the new device will be a snapshot.”h]”hŒîCreate a new snapshot of another thinly-provisioned device. is an arbitrary unique 24-bit identifier chosen by the caller. is the identifier of the thinly-provisioned device of which the new device will be a snapshot.”…”�”}”(hjÁ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´Mmhj¾ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¢hj¬ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jŒh³hÊh´Mqhjz ubj�)�”}”(hŒ6delete Deletes a thin device. Irreversible. ”h]”(j“)�”}”(hŒdelete ”h]”hŒdelete ”…”�”}”(hjß h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j’h³hÊh´MthjÛ ubj£)�”}”(hhh]”hÝ)�”}”(hŒ%Deletes a thin device. Irreversible.”h]”hŒ%Deletes a thin device. Irreversible.”…”�”}”(hjð h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´Mthjí ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¢hjÛ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jŒh³hÊh´Mthjz ubj�)�”}”(hXªset_transaction_id Userland volume managers, such as LVM, need a way to synchronise their external metadata with the internal metadata of the pool target. The thin-pool target offers to store an arbitrary 64-bit transaction id and return it on the target's status line. To avoid races you must provide what you think the current transaction id is when you change it with this compare-and-swap message. ”h]”(j“)�”}”(hŒ(set_transaction_id ”h]”hŒ(set_transaction_id ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j’h³hÊh´M}hj ubj£)�”}”(hhh]”hÝ)�”}”(hX€Userland volume managers, such as LVM, need a way to synchronise their external metadata with the internal metadata of the pool target. The thin-pool target offers to store an arbitrary 64-bit transaction id and return it on the target's status line. To avoid races you must provide what you think the current transaction id is when you change it with this compare-and-swap message.”h]”hX‚Userland volume managers, such as LVM, need a way to synchronise their external metadata with the internal metadata of the pool target. The thin-pool target offers to store an arbitrary 64-bit transaction id and return it on the target’s status line. To avoid races you must provide what you think the current transaction id is when you change it with this compare-and-swap message.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´Mwhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¢hj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jŒh³hÊh´M}hjz ubj�)�”}”(hX reserve_metadata_snap Reserve a copy of the data mapping btree for use by userland. This allows userland to inspect the mappings as they were when this message was executed. Use the pool's status command to get the root block associated with the metadata snapshot. ”h]”(j“)�”}”(hŒreserve_metadata_snap”h]”hŒreserve_metadata_snap”…”�”}”(hj= h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j’h³hÊh´Mƒhj9 ubj£)�”}”(hhh]”hÝ)�”}”(hŒóReserve a copy of the data mapping btree for use by userland. This allows userland to inspect the mappings as they were when this message was executed. Use the pool's status command to get the root block associated with the metadata snapshot.”h]”hŒõReserve a copy of the data mapping btree for use by userland. This allows userland to inspect the mappings as they were when this message was executed. Use the pool’s status command to get the root block associated with the metadata snapshot.”…”�”}”(hjN h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´M€hjK ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¢hj9 ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jŒh³hÊh´Mƒhjz ubj�)�”}”(hŒTrelease_metadata_snap Release a previously reserved copy of the data mapping btree. ”h]”(j“)�”}”(hŒrelease_metadata_snap”h]”hŒrelease_metadata_snap”…”�”}”(hjl h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j’h³hÊh´M†hjh ubj£)�”}”(hhh]”hÝ)�”}”(hŒ=Release a previously reserved copy of the data mapping btree.”h]”hŒ=Release a previously reserved copy of the data mapping btree.”…”�”}”(hj} h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´M†hjz ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¢hjh ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jŒh³hÊh´M†hjz ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j‡hjv ubah}”(h]”h ]”h"]”h$]”h&]”uh1jTh³hÊh´Mghj=h²hubeh}”(h]”Œthin-pool-target”ah ]”h"]”Œ'thin-pool' target”ah$]”h&]”uh1hµhj,h²hh³hÊh´Mubh¶)�”}”(hhh]”(h»)�”}”(hŒ 'thin' target”h]”hŒ‘thin’ target”…”�”}”(hj® h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj« h²hh³hÊh´M‰ubjq)�”}”(hhh]”j)�”}”(hX°Constructor :: thin [] pool dev: the thin-pool device, e.g. /dev/mapper/my_pool or 253:0 dev id: the internal device identifier of the device to be activated. external origin dev: an optional block device outside the pool to be treated as a read-only snapshot origin: reads to unprovisioned areas of the thin target will be mapped to this device. ”h]”(hÝ)�”}”(hŒ Constructor”h]”hŒ Constructor”…”�”}”(hjà h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´M‹hj¿ ubjU)�”}”(hX˜:: thin [] pool dev: the thin-pool device, e.g. /dev/mapper/my_pool or 253:0 dev id: the internal device identifier of the device to be activated. external origin dev: an optional block device outside the pool to be treated as a read-only snapshot origin: reads to unprovisioned areas of the thin target will be mapped to this device. ”h]”(jÙ)�”}”(hŒ0thin []”h]”hŒ0thin []”…”�”}”hjÕ sbah}”(h]”h ]”h"]”h$]”h&]”jèjéuh1jØh³hÊh´M�hjÑ ubjˆ)�”}”(hhh]”(j�)�”}”(hŒBpool dev: the thin-pool device, e.g. /dev/mapper/my_pool or 253:0 ”h]”(j“)�”}”(hŒ pool dev:”h]”hŒ pool dev:”…”�”}”(hjê h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j’h³hÊh´M’hjæ ubj£)�”}”(hhh]”hÝ)�”}”(hŒ7the thin-pool device, e.g. /dev/mapper/my_pool or 253:0”h]”hŒ7the thin-pool device, e.g. /dev/mapper/my_pool or 253:0”…”�”}”(hjû h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´M’hjø ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¢hjæ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jŒh³hÊh´M’hjã ubj�)�”}”(hŒFdev id: the internal device identifier of the device to be activated. ”h]”(j“)�”}”(hŒdev id:”h]”hŒdev id:”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j’h³hÊh´M–hj ubj£)�”}”(hhh]”hÝ)�”}”(hŒ=the internal device identifier of the device to be activated.”h]”hŒ=the internal device identifier of the device to be activated.”…”�”}”(hj* h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´M•hj' ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¢hj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jŒh³hÊh´M–hjã ubj�)�”}”(hŒ¼external origin dev: an optional block device outside the pool to be treated as a read-only snapshot origin: reads to unprovisioned areas of the thin target will be mapped to this device. ”h]”(j“)�”}”(hŒexternal origin dev:”h]”hŒexternal origin dev:”…”�”}”(hjH h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j’h³hÊh´M›hjD ubj£)�”}”(hhh]”hÝ)�”}”(hŒ¦an optional block device outside the pool to be treated as a read-only snapshot origin: reads to unprovisioned areas of the thin target will be mapped to this device.”h]”hŒ¦an optional block device outside the pool to be treated as a read-only snapshot origin: reads to unprovisioned areas of the thin target will be mapped to this device.”…”�”}”(hjY h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´M™hjV ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¢hjD ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jŒh³hÊh´M›hjã ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j‡hjÑ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jTh³hÊh´M�hj¿ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhj¼ h²hh³hÊh´Nubah}”(h]”h ]”h"]”h$]”h&]”j“j”j•hj–j—uh1jphj« h²hh³hÊh´M‹ubhÝ)�”}”(hX/The pool doesn't store any size against the thin devices. If you load a thin target that is smaller than you've been using previously, then you'll have no access to blocks mapped beyond the end. If you load a target that is bigger than before, then extra blocks will be provisioned as and when needed.”h]”hX5The pool doesn’t store any size against the thin devices. If you load a thin target that is smaller than you’ve been using previously, then you’ll have no access to blocks mapped beyond the end. If you load a target that is bigger than before, then extra blocks will be provisioned as and when needed.”…”�”}”(hj‹ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´M�hj« h²hubjq)�”}”(hhh]”j)�”}”(hX`Status If the pool has encountered device errors and failed, the status will just contain the string 'Fail'. The userspace recovery tools should then be used. In the case where is 0, there is no highest mapped sector and the value of is unspecified.”h]”(hÝ)�”}”(hŒStatus”h]”hŒStatus”…”�”•»}”(hj  h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´M£hjœ ubjˆ)�”}”(hhh]”j�)�”}”(hŒÅ If the pool has encountered device errors and failed, the status will just contain the string 'Fail'. The userspace recovery tools should then be used. ”h]”(j“)�”}”(hŒ+ ”h]”hŒ+ ”…”�”}”(hjµ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j’h³hÊh´M¨hj± ubj£)�”}”(hhh]”hÝ)�”}”(hŒ˜If the pool has encountered device errors and failed, the status will just contain the string 'Fail'. The userspace recovery tools should then be used.”h]”hŒœIf the pool has encountered device errors and failed, the status will just contain the string ‘Fail’. The userspace recovery tools should then be used.”…”�”}”(hjÆ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´M¦hjà ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¢hj± ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jŒh³hÊh´M¨hj® ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡hjœ ubhÝ)�”}”(hŒ†In the case where is 0, there is no highest mapped sector and the value of is unspecified.”h]”hŒ†In the case where is 0, there is no highest mapped sector and the value of is unspecified.”…”�”}”(hjæ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´Mªhjœ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhj™ h²hh³hÊh´Nubah}”(h]”h ]”h"]”h$]”h&]”j“j”j•hj–j—jíKuh1jphj« h²hh³hÊh´M£ubeh}”(h]”Œ thin-target”ah ]”h"]”Œ 'thin' target”ah$]”h&]”uh1hµhj,h²hh³hÊh´M‰ubeh}”(h]”Œ reference”ah ]”h"]”Œ reference”ah$]”h&]”uh1hµhh·h²hh³hÊh´Mubeh}”(h]”Œthin-provisioning”ah ]”h"]”h$]”j(ah&]”uh1hµhhh²hh³hÊh´Kj*Kubeh}”(h]”h ]”h"]”h$]”h&]”Œsource”hÊuh1hŒcurrent_source”NŒ current_line”NŒsettings”Œdocutils.frontend”ŒValues”“”)�”}”(hºNŒ generator”NŒ datestamp”NŒ source_link”NŒ source_url”NŒ toc_backlinks”Œentry”Œfootnote_backlinks”KŒ sectnum_xform”KŒstrip_comments”NŒstrip_elements_with_classes”NŒ strip_classes”NŒ report_level”KŒ halt_level”KŒexit_status_level”KŒdebug”NŒwarning_stream”NŒ traceback”ˆŒinput_encoding”Œ utf-8-sig”Œinput_encoding_error_handler”Œstrict”Œoutput_encoding”Œutf-8”Œoutput_encoding_error_handler”j: Œerror_encoding”Œutf-8”Œerror_encoding_error_handler”Œbackslashreplace”Œ language_code”Œen”Œrecord_dependencies”NŒconfig”NŒ id_prefix”hŒauto_id_prefix”Œid”Œ dump_settings”NŒdump_internals”NŒdump_transforms”NŒdump_pseudo_xml”NŒexpose_internals”NŒstrict_visitor”NŒ_disable_config”NŒ_source”hÊŒ _destination”NŒ _config_files”]”Œ7/var/lib/git/docbuild/linux/Documentation/docutils.conf”aŒfile_insertion_enabled”ˆŒ raw_enabled”KŒline_length_limit”M'Œpep_references”NŒ pep_base_url”Œhttps://peps.python.org/”Œpep_file_url_template”Œpep-%04d”Œrfc_references”NŒ rfc_base_url”Œ&https://datatracker.ietf.org/doc/html/”Œ tab_width”KŒtrim_footnote_reference_space”‰Œsyntax_highlight”Œlong”Œ smart_quotes”ˆŒsmartquotes_locales”]”Œcharacter_level_inline_markup”‰Œdoctitle_xform”‰Œ docinfo_xform”KŒsectsubtitle_xform”‰Œ image_loading”Œlink”Œembed_stylesheet”‰Œcloak_email_addresses”ˆŒsection_self_link”‰Œenv”NubŒreporter”NŒindirect_targets”]”Œsubstitution_defs”}”Œsubstitution_names”}”Œrefnames”}”Œrefids”}”Œnameids”}”(Œthin provisioning”NjZjWj³j°j)j&j2j/j�jšjÄjÁj'j$j\jYjùjöjìjéj!jj j j¨ j¥ j j uŒ nametypes”}”(j~ ‰jZ‰j³‰j)‰j2‰j�‰jĉj'‰j\‰jù‰jì‰j!‰j ‰j¨ ‰j ‰uh}”(j h·jWhËj°j]j&j¶j/jÕjšj5jÁj j$jÇjYj*j$j_jöj+jéjüjjïj j,j¥ j=j j« uŒ footnote_refs”}”Œ citation_refs”}”Œ autofootnotes”]”Œautofootnote_refs”]”Œsymbol_footnotes”]”Œsymbol_footnote_refs”]”Œ footnotes”]”Œ citations”]”Œautofootnote_start”KŒsymbol_footnote_start”KŒ id_counter”Œ collections”ŒCounter”“”}”jH Ks…”R”Œparse_messages”]”(hŒsystem_message”“”)�”}”(hhh]”hÝ)�”}”(hŒ4Duplicate implicit target name: "thin provisioning".”h]”hŒ8Duplicate implicit target name: “thin provisioningâ€�.”…”�”}”(hj¢ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜhjŸ ubah}”(h]”h ]”h"]”h$]”h&]”j$aŒlevel”KŒtype”ŒINFO”Œsource”hÊŒline”Kžuh1j� hj_h²hh³hÊh´Kžubjž )�”}”(hhh]”hÝ)�”}”(hŒ;Enumerated list start value not ordinal-1: "ii" (ordinal 2)”h]”hŒ?Enumerated list start value not ordinal-1: “iiâ€� (ordinal 2)”…”�”}”(hj¾ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜhj» ubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”j¸ Œsource”hÊŒline”Kuh1j� hj_h²hh³hÊh´K«ubjž )�”}”(hhh]”hÝ)�”}”(hŒ;Enumerated list start value not ordinal-1: "ii" (ordinal 2)”h]”hŒ?Enumerated list start value not ordinal-1: “iiâ€� (ordinal 2)”…”�”}”(hjÙ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜhjÖ ubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”j¸ Œsource”hÊŒline”Kuh1j� hj+h²hh³hÊh´KÇubjž )�”}”(hhh]”hÝ)�”}”(hŒ;Enumerated list start value not ordinal-1: "ii" (ordinal 2)”h]”hŒ?Enumerated list start value not ordinal-1: “iiâ€� (ordinal 2)”…”�”}”(hjô h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜhjñ ubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”j¸ Œsource”hÊŒline”Kuh1j� hjüh²hh³hÊh´Kîubjž )�”}”(hhh]”hÝ)�”}”(hŒ;Enumerated list start value not ordinal-1: "ii" (ordinal 2)”h]”hŒ?Enumerated list start value not ordinal-1: “iiâ€� (ordinal 2)”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜhj ubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”j¸ Œsource”hÊŒline”Kuh1j� hj« h²hh³hÊh´M£ubeŒtransform_messages”]”Œ transformer”NŒ include_log”]”Œ decoration”Nh²hub.