€•€òŒ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”Œ6/translations/zh_CN/admin-guide/device-mapper/dm-clone”Œmodname”NŒ classname”NŒ refexplicit”ˆuŒtagname”hhh ubh)�”}”(hhh]”hŒChinese (Traditional)”…”�”}”hh2sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ6/translations/zh_TW/admin-guide/device-mapper/dm-clone”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒItalian”…”�”}”hhFsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ6/translations/it_IT/admin-guide/device-mapper/dm-clone”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒJapanese”…”�”}”hhZsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ6/translations/ja_JP/admin-guide/device-mapper/dm-clone”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒKorean”…”�”}”hhnsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ6/translations/ko_KR/admin-guide/device-mapper/dm-clone”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒPortuguese (Brazilian)”…”�”}”hh‚sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ6/translations/pt_BR/admin-guide/device-mapper/dm-clone”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒSpanish”…”�”}”hh–sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ6/translations/sp_SP/admin-guide/device-mapper/dm-clone”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubeh}”(h]”h ]”h"]”h$]”h&]”Œcurrent_language”ŒEnglish”uh1h hhŒ _document”hŒsource”NŒline”NubhŒcomment”“”)�”}”(hŒ%SPDX-License-Identifier: GPL-2.0-only”h]”hŒ%SPDX-License-Identifier: GPL-2.0-only”…”�”}”hh·sbah}”(h]”h ]”h"]”h$]”h&]”Œ xml:space”Œpreserve”uh1hµhhh²hh³ŒP/var/lib/git/docbuild/linux/Documentation/admin-guide/device-mapper/dm-clone.rst”h´KubhŒsection”“”)�”}”(hhh]”(hŒtitle”“”)�”}”(hŒdm-clone”h]”hŒdm-clone”…”�”}”(hhÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhhÊh²hh³hÇ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”“”)�”}”(hXdm-clone is a device mapper target which produces a one-to-one copy of an existing, read-only source device into a writable destination device: It presents a virtual block device which makes all data appear immediately, and redirects reads and writes accordingly.”h]”hXdm-clone is a device mapper target which produces a one-to-one copy of an existing, read-only source device into a writable destination device: It presents a virtual block device which makes all data appear immediately, and redirects reads and writes accordingly.”…”�”}”(hhðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K hhÝh²hubhï)�”}”(hX^The main use case of dm-clone is to clone a potentially remote, high-latency, read-only, archival-type block device into a writable, fast, primary-type device for fast, low-latency I/O. The cloned device is visible/mountable immediately and the copy of the source device to the destination device happens in the background, in parallel with user I/O.”h]”hX^The main use case of dm-clone is to clone a potentially remote, high-latency, read-only, archival-type block device into a writable, fast, primary-type device for fast, low-latency I/O. The cloned device is visible/mountable immediately and the copy of the source device to the destination device happens in the background, in parallel with user I/O.”…”�”}”(hhþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KhhÝh²hubhï)�”}”(hXFor example, one could restore an application backup from a read-only copy, accessible through a network storage protocol (NBD, Fibre Channel, iSCSI, AoE, etc.), into a local SSD or NVMe device, and start using the device immediately, without waiting for the restore to complete.”h]”hXFor example, one could restore an application backup from a read-only copy, accessible through a network storage protocol (NBD, Fibre Channel, iSCSI, AoE, etc.), into a local SSD or NVMe device, and start using the device immediately, without waiting for the restore to complete.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KhhÝh²hubhï)�”}”(hŒžWhen the cloning completes, the dm-clone table can be removed altogether and be replaced, e.g., by a linear table, mapping directly to the destination device.”h]”hŒžWhen the cloning completes, the dm-clone table can be removed altogether and be replaced, e.g., by a linear table, mapping directly to the destination device.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KhhÝh²hubhï)�”}”(hŒUThe dm-clone target reuses the metadata library used by the thin-provisioning target.”h]”hŒUThe dm-clone target reuses the metadata library used by the thin-provisioning target.”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KhhÝh²hubeh}”(h]”Œ introduction”ah ]”h"]”Œ introduction”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´KubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒGlossary”h]”hŒGlossary”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj>h²hh³hÇh´K!ubhŒ block_quote”“”)�”}”(hŒÃHydration The process of filling a region of the destination device with data from the same region of the source device, i.e., copying the region from the source to the destination device. ”h]”hŒdefinition_list”“”)�”}”(hhh]”hŒdefinition_list_item”“”)�”}”(hŒ½Hydration The process of filling a region of the destination device with data from the same region of the source device, i.e., copying the region from the source to the destination device. ”h]”(hŒterm”“”)�”}”(hŒ Hydration”h]”hŒ Hydration”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j`h³hÇh´K&hj\ubhŒ definition”“”)�”}”(hhh]”hï)�”}”(hŒ²The process of filling a region of the destination device with data from the same region of the source device, i.e., copying the region from the source to the destination device.”h]”hŒ²The process of filling a region of the destination device with data from the same region of the source device, i.e., copying the region from the source to the destination device.”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K$hjrubah}”(h]”h ]”h"]”h$]”h&]”uh1jphj\ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jZh³hÇh´K&hjWubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhjQubah}”(h]”h ]”h"]”h$]”h&]”uh1jOh³hÇh´K#hj>h²hubhï)�”}”(hŒWOnce a region gets hydrated we redirect all I/O regarding it to the destination device.”h]”hŒWOnce a region gets hydrated we redirect all I/O regarding it to the destination device.”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K(hj>h²hubeh}”(h]”Œglossary”ah ]”h"]”Œglossary”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´K!ubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒDesign”h]”hŒDesign”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj±h²hh³hÇh´K,ubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ Sub-devices”h]”hŒ Sub-devices”…”�”}”(hjÅh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjÂh²hh³hÇh´K/ubhï)�”}”(hŒfThe target is constructed by passing three devices to it (along with other parameters detailed later):”h]”hŒfThe target is constructed by passing three devices to it (along with other parameters detailed later):”…”�”}”(hjÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K1hjÂh²hubhŒenumerated_list”“”)�”}”(hhh]”(hŒ list_item”“”)�”}”(hŒUA source device - the read-only device that gets cloned and source of the hydration. ”h]”hï)�”}”(hŒTA source device - the read-only device that gets cloned and source of the hydration.”h]”hŒTA source device - the read-only device that gets cloned and source of the hydration.”…”�”}”(hjìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K4hjèubah}”(h]”h ]”h"]”h$]”h&]”uh1jæhjãh²hh³hÇh´Nubjç)�”}”(hŒiA destination device - the destination of the hydration, which will become a clone of the source device. ”h]”hï)�”}”(hŒhA destination device - the destination of the hydration, which will become a clone of the source device.”h]”hŒhA destination device - the destination of the hydration, which will become a clone of the source device.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K7hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jæhjãh²hh³hÇh´Nubjç)�”}”(hŒÀA small metadata device - it records which regions are already valid in the destination device, i.e., which regions have already been hydrated, or have been written to directly, via user I/O. ”h]”hï)�”}”(hŒ¿A small metadata device - it records which regions are already valid in the destination device, i.e., which regions have already been hydrated, or have been written to directly, via user I/O.”h]”hŒ¿A small metadata device - it records which regions are already valid in the destination device, i.e., which regions have already been hydrated, or have been written to directly, via user I/O.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K:hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jæhjãh²hh³hÇh´Nubeh}”(h]”h ]”h"]”h$]”h&]”Œenumtype”Œarabic”Œprefix”hŒsuffix”Œ.”uh1jáhjÂh²hh³hÇh´K4ubhï)�”}”(hŒ[The size of the destination device must be at least equal to the size of the source device.”h]”hŒ[The size of the destination device must be at least equal to the size of the source device.”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K>hjÂh²hubeh}”(h]”Œ sub-devices”ah ]”h"]”Œ sub-devices”ah$]”h&]”uh1hÈhj±h²hh³hÇh´K/ubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒRegions”h]”hŒRegions”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjQh²hh³hÇh´KBubhï)�”}”(hŒÁdm-clone divides the source and destination devices in fixed sized regions. Regions are the unit of hydration, i.e., the minimum amount of data copied from the source to the destination device.”h]”hŒÁdm-clone divides the source and destination devices in fixed sized regions. Regions are the unit of hydration, i.e., the minimum amount of data copied from the source to the destination device.”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KDhjQh²hubhï)�”}”(hXThe region size is configurable when you first create the dm-clone device. The recommended region size is the same as the file system block size, which usually is 4KB. The region size must be between 8 sectors (4KB) and 2097152 sectors (1GB) and a power of two.”h]”hXThe region size is configurable when you first create the dm-clone device. The recommended region size is the same as the file system block size, which usually is 4KB. The region size must be between 8 sectors (4KB) and 2097152 sectors (1GB) and a power of two.”…”�”}”(hjph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KHhjQh²hubhï)�”}”(hŒSReads and writes from/to hydrated regions are serviced from the destination device.”h]”hŒSReads and writes from/to hydrated regions are serviced from the destination device.”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KMhjQh²hubhï)�”}”(hŒPA read to a not yet hydrated region is serviced directly from the source device.”h]”hŒPA read to a not yet hydrated region is serviced directly from the source device.”…”�”}”(hjŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KPhjQh²hubhï)�”}”(hŒ™A write to a not yet hydrated region will be delayed until the corresponding region has been hydrated and the hydration of the region starts immediately.”h]”hŒ™A write to a not yet hydrated region will be delayed until the corresponding region has been hydrated and the hydration of the region starts immediately.”…”�”}”(hjšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KRhjQh²hubhï)�”}”(hŒºNote that a write request with size equal to region size will skip copying of the corresponding region from the source device and overwrite the region of the destination device directly.”h]”hŒºNote that a write request with size equal to region size will skip copying of the corresponding region from the source device and overwrite the region of the destination device directly.”…”�”}”(hj¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KUhjQh²hubeh}”(h]”Œregions”ah ]”h"]”Œregions”ah$]”h&]”uh1hÈhj±h²hh³hÇh´KBubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒDiscards”h]”hŒDiscards”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj¾h²hh³hÇh´KZubhï)�”}”(hXdm-clone interprets a discard request to a range that hasn't been hydrated yet as a hint to skip hydration of the regions covered by the request, i.e., it skips copying the region's data from the source to the destination device, and only updates its metadata.”h]”hXdm-clone interprets a discard request to a range that hasn’t been hydrated yet as a hint to skip hydration of the regions covered by the request, i.e., it skips copying the region’s data from the source to the destination device, and only updates its metadata.”…”�”}”(hjÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K\hj¾h²hubhï)�”}”(hŒlIf the destination device supports discards, then by default dm-clone will pass down discard requests to it.”h]”hŒlIf the destination device supports discards, then by default dm-clone will pass down discard requests to it.”…”�”}”(hjÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Kahj¾h²hubeh}”(h]”Œdiscards”ah ]”h"]”Œdiscards”ah$]”h&]”uh1hÈhj±h²hh³hÇh´KZubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒBackground Hydration”h]”hŒBackground Hydration”…”�”}”(hjöh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjóh²hh³hÇh´Keubhï)�”}”(hŒpdm-clone copies continuously from the source to the destination device, until all of the device has been copied.”h]”hŒpdm-clone copies continuously from the source to the destination device, until all of the device has been copied.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Kghjóh²hubhï)�”}”(hX;Copying data from the source to the destination device uses bandwidth. The user can set a throttle to prevent more than a certain amount of copying occurring at any one time. Moreover, dm-clone takes into account user I/O traffic going to the devices and pauses the background hydration when there is I/O in-flight.”h]”hX;Copying data from the source to the destination device uses bandwidth. The user can set a throttle to prevent more than a certain amount of copying occurring at any one time. Moreover, dm-clone takes into account user I/O traffic going to the devices and pauses the background hydration when there is I/O in-flight.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Kjhjóh²hubhï)�”}”(hŒ…A message `hydration_threshold <#regions>` can be used to set the maximum number of regions being copied, the default being 1 region.”h]”(hŒ A message ”…”�”}”(hj h²hh³Nh´NubhŒtitle_reference”“”)�”}”(hŒ `hydration_threshold <#regions>`”h]”hŒhydration_threshold <#regions>”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hj ubhŒ[ can be used to set the maximum number of regions being copied, the default being 1 region.”…”�”}”(hj h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Kohjóh²hubhï)�”}”(hXŸdm-clone employs dm-kcopyd for copying portions of the source device to the destination device. By default, we issue copy requests of size equal to the region size. A message `hydration_batch_size <#regions>` can be used to tune the size of these copy requests. Increasing the hydration batch size results in dm-clone trying to batch together contiguous regions, so we copy the data in batches of this many regions.”h]”(hŒ¯dm-clone employs dm-kcopyd for copying portions of the source device to the destination device. By default, we issue copy requests of size equal to the region size. A message ”…”�”}”(hjBh²hh³Nh´Nubj))�”}”(hŒ!`hydration_batch_size <#regions>`”h]”hŒhydration_batch_size <#regions>”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hjBubhŒÏ can be used to tune the size of these copy requests. Increasing the hydration batch size results in dm-clone trying to batch together contiguous regions, so we copy the data in batches of this many regions.”…”�”}”(hjBh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Krhjóh²hubhï)�”}”(hŒ]When the hydration of the destination device finishes, a dm event will be sent to user space.”h]”hŒ]When the hydration of the destination device finishes, a dm event will be sent to user space.”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Kyhjóh²hubeh}”(h]”Œbackground-hydration”ah ]”h"]”Œbackground hydration”ah$]”h&]”uh1hÈhj±h²hh³hÇh´KeubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒUpdating on-disk metadata”h]”hŒUpdating on-disk metadata”…”�”}”(hj{h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjxh²hh³hÇh´K}ubhï)�”}”(hXYOn-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 dm-clone device 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]”hXYOn-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 dm-clone device 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´Khjxh²hubeh}”(h]”Œupdating-on-disk-metadata”ah ]”h"]”Œupdating on-disk metadata”ah$]”h&]”uh1hÈhj±h²hh³hÇh´K}ubeh}”(h]”Œdesign”ah ]”h"]”Œdesign”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´K,ubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒTarget Interface”h]”hŒTarget Interface”…”�”}”(hjªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj§h²hh³hÇh´K†ubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ Constructor”h]”hŒ Constructor”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj¸h²hh³hÇh´K‰ubjP)�”}”(hXr :: clone [<#feature args> []* [<#core args> []*]] ================ ============================================================== metadata dev Fast device holding the persistent metadata destination dev The destination device, where the source will be cloned source dev Read only device containing the data that gets cloned region size The size of a region in sectors #feature args Number of feature arguments passed feature args no_hydration or no_discard_passdown #core args An even number of arguments corresponding to key/value pairs passed to dm-clone core args Key/value pairs passed to dm-clone, e.g. `hydration_threshold 256` ================ ============================================================== ”h]”(jP)�”}”(hŒŽ:: clone [<#feature args> []* [<#core args> []*]] ”h]”hŒ literal_block”“”)�”}”(hŒ‡clone [<#feature args> []* [<#core args> []*]]”h]”hŒ‡clone [<#feature args> []* [<#core args> []*]]”…”�”}”hjÓsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jÑh³hÇh´K�hjÍubah}”(h]”h ]”h"]”h$]”h&]”uh1jOh³hÇh´K‹hjÉubhŒtable”“”)�”}”(hhh]”hŒtgroup”“”)�”}”(hhh]”(hŒcolspec”“”)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jñhjîubjò)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K>uh1jñhjîubhŒtbody”“”)�”}”(hhh]”(hŒrow”“”)�”}”(hhh]”(hŒentry”“”)�”}”(hhh]”hï)�”}”(hŒ metadata dev”h]”hŒ metadata dev”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K‘hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubj)�”}”(hhh]”hï)�”}”(hŒ+Fast device holding the persistent metadata”h]”hŒ+Fast device holding the persistent metadata”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K‘hj*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj ubj )�”}”(hhh]”(j)�”}”(hhh]”hï)�”}”(hŒdestination dev”h]”hŒdestination dev”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K’hjJubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjGubj)�”}”(hhh]”hï)�”}”(hŒ7The destination device, where the source will be cloned”h]”hŒ7The destination device, where the source will be cloned”…”�”}”(hjdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K’hjaubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjGubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj ubj )�”}”(hhh]”(j)�”}”(hhh]”hï)�”}”(hŒ source dev”h]”hŒ source dev”…”�”}”(hj„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K“hj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj~ubj)�”}”(hhh]”hï)�”}”(hŒ5Read only device containing the data that gets cloned”h]”hŒ5Read only device containing the data that gets cloned”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K“hj˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj~ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj ubj )�”}”(hhh]”(j)�”}”(hhh]”hï)�”}”(hŒ region size”h]”hŒ region size”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K”hj¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjµubj)�”}”(hhh]”hï)�”}”(hŒThe size of a region in sectors”h]”hŒThe size of a region in sectors”…”�”}”(hjÒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K”hjÏubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjµubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj ubj )�”}”(hhh]”(j)�”}”(hhh]”hï)�”}”(hŒ #feature args”h]”hŒ #feature args”…”�”}”(hjòh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K–hjïubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjìubj)�”}”(hhh]”hï)�”}”(hŒ"Number of feature arguments passed”h]”hŒ"Number of feature arguments passed”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K–hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjìubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj ubj )�”}”(hhh]”(j)�”}”(hhh]”hï)�”}”(hŒ feature args”h]”hŒ feature args”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K—hj&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj#ubj)�”}”(hhh]”hï)�”}”(hŒ#no_hydration or no_discard_passdown”h]”hŒ#no_hydration or no_discard_passdown”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K—hj=ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj#ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj ubj )�”}”(hhh]”(j)�”}”(hhh]”hï)�”}”(hŒ #core args”h]”hŒ #core args”…”�”}”(hj`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K™hj]ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjZubj)�”}”(hhh]”hï)�”}”(hŒOAn even number of arguments corresponding to key/value pairs passed to dm-clone”h]”hŒOAn even number of arguments corresponding to key/value pairs passed to dm-clone”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K™hjtubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjZubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj ubj )�”}”(hhh]”(j)�”}”(hhh]”hï)�”}”(hŒ core args”h]”hŒ core args”…”�”}”(hj—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K›hj”ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj‘ubj)�”}”(hhh]”hï)�”}”(hŒBKey/value pairs passed to dm-clone, e.g. `hydration_threshold 256`”h]”(hŒ)Key/value pairs passed to dm-clone, e.g. ”…”�”}”(hj®h²hh³Nh´Nubj))�”}”(hŒ`hydration_threshold 256`”h]”hŒhydration_threshold 256”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hj®ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K›hj«ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj‘ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjîubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1jìhjéubah}”(h]”h ]”h"]”h$]”h&]”uh1jçhjÉubeh}”(h]”h ]”h"]”h$]”h&]”uh1jOh³hÇh´K‹hj¸h²hubhï)�”}”(hŒOptional feature arguments are:”h]”hŒOptional feature arguments are:”…”�”}”(hjïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KŸhj¸h²hubjP)�”}”(hXS==================== ========================================================= no_hydration Create a dm-clone instance with background hydration disabled no_discard_passdown Disable passing down discards to the destination device ==================== ========================================================= ”h]”jè)�”}”(hhh]”jí)�”}”(hhh]”(jò)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jñhjubjò)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K9uh1jñhjubj)�”}”(hhh]”(j )�”}”(hhh]”(j)�”}”(hhh]”hï)�”}”(hŒ no_hydration”h]”hŒ no_hydration”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K¢hj!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubj)�”}”(hhh]”hï)�”}”(hŒ=Create a dm-clone instance with background hydration disabled”h]”hŒ=Create a dm-clone instance with background hydration disabled”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K¢hj8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjubj )�”}”(hhh]”(j)�”}”(hhh]”hï)�”}”(hŒno_discard_passdown”h]”hŒno_discard_passdown”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K¤hjXubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjUubj)�”}”(hhh]”hï)�”}”(hŒ7Disable passing down discards to the destination device”h]”hŒ7Disable passing down discards to the destination device”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K¤hjoubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjUubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1jìhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jçhjýubah}”(h]”h ]”h"]”h$]”h&]”uh1jOh³hÇh´K¡hj¸h²hubhï)�”}”(hŒOptional core arguments are:”h]”hŒOptional core arguments are:”…”�”}”(hj¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K§hj¸h²hubjP)�”}”(hX¨================================ ============================================== hydration_threshold <#regions> Maximum number of regions being copied from the source to the destination device at any one time, during background hydration. hydration_batch_size <#regions> During background hydration, try to batch together contiguous regions, so we copy data from the source to the destination device in batches of this many regions. ================================ ============================================== ”h]”jè)�”}”(hhh]”jí)�”}”(hhh]”(jò)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K uh1jñhjºubjò)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K.uh1jñhjºubj)�”}”(hhh]”(j )�”}”(hhh]”(j)�”}”(hhh]”hï)�”}”(hŒhydration_threshold <#regions>”h]”hŒhydration_threshold <#regions>”…”�”}”(hjÚh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Kªhj×ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÔubj)�”}”(hhh]”hï)�”}”(hŒ~Maximum number of regions being copied from the source to the destination device at any one time, during background hydration.”h]”hŒ~Maximum number of regions being copied from the source to the destination device at any one time, during background hydration.”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Kªhjîubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÔubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjÑubj )�”}”(hhh]”(j)�”}”(hhh]”hï)�”}”(hŒhydration_batch_size <#regions>”h]”hŒhydration_batch_size <#regions>”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K­hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj ubj)�”}”(hhh]”hï)�”}”(hŒ¡During background hydration, try to batch together contiguous regions, so we copy data from the source to the destination device in batches of this many regions.”h]”hŒ¡During background hydration, try to batch together contiguous regions, so we copy data from the source to the destination device in batches of this many regions.”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K­hj%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjÑubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjºubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1jìhj·ubah}”(h]”h ]”h"]”h$]”h&]”uh1jçhj³ubah}”(h]”h ]”h"]”h$]”h&]”uh1jOh³hÇh´K©hj¸h²hubeh}”(h]”Œ constructor”ah ]”h"]”Œ constructor”ah$]”h&]”uh1hÈhj§h²hh³hÇh´K‰ubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒStatus”h]”hŒStatus”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjch²hh³hÇh´K´ubjP)�”}”(hX÷ :: <#used metadata blocks>/<#total metadata blocks> <#hydrated regions>/<#total regions> <#hydrating regions> <#feature args> * <#core args> * ======================= ======================================================= metadata block size Fixed block size for each metadata block in sectors #used metadata blocks Number of metadata blocks used #total metadata blocks Total number of metadata blocks region size Configurable region size for the device in sectors #hydrated regions Number of regions that have finished hydrating #total regions Total number of regions to hydrate #hydrating regions Number of regions currently hydrating #feature args Number of feature arguments to follow feature args Feature arguments, e.g. `no_hydration` #core args Even number of core arguments to follow core args Key/value pairs for tuning the core, e.g. `hydration_threshold 256` clone metadata mode ro if read-only, rw if read-write 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'. If the metadata mode changes, a dm event will be sent to user space. ======================= ======================================================= ”h]”(jP)�”}”(hŒç:: <#used metadata blocks>/<#total metadata blocks> <#hydrated regions>/<#total regions> <#hydrating regions> <#feature args> * <#core args> * ”h]”jÒ)�”}”(hŒÞ <#used metadata blocks>/<#total metadata blocks> <#hydrated regions>/<#total regions> <#hydrating regions> <#feature args> * <#core args> * ”h]”hŒÞ <#used metadata blocks>/<#total metadata blocks> <#hydrated regions>/<#total regions> <#hydrating regions> <#feature args> * <#core args> * ”…”�”}”hj|sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jÑh³hÇh´K¸hjxubah}”(h]”h ]”h"]”h$]”h&]”uh1jOh³hÇh´K¶hjtubjè)�”}”(hhh]”jí)�”}”(hhh]”(jò)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jñhj“ubjò)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K7uh1jñhj“ubj)�”}”(hhh]”(j )�”}”(hhh]”(j)�”}”(hhh]”hï)�”}”(hŒmetadata block size”h]”hŒmetadata block size”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K¾hj°ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj­ubj)�”}”(hhh]”hï)�”}”(hŒ3Fixed block size for each metadata block in sectors”h]”hŒ3Fixed block size for each metadata block in sectors”…”�”}”(hjÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K¾hjÇubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj­ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjªubj )�”}”(hhh]”(j)�”}”(hhh]”hï)�”}”(hŒ#used metadata blocks”h]”hŒ#used metadata blocks”…”�”}”(hjêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K¿hjçubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjäubj)�”}”(hhh]”hï)�”}”(hŒNumber of metadata blocks used”h]”hŒNumber of metadata blocks used”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K¿hjþubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjäubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjªubj )�”}”(hhh]”(j)�”}”(hhh]”hï)�”}”(hŒ#total metadata blocks”h]”hŒ#total metadata blocks”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KÀhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubj)�”}”(hhh]”hï)�”}”(hŒTotal number of metadata blocks”h]”hŒTotal number of metadata blocks”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KÀhj5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjªubj )�”}”(hhh]”(j)�”}”(hhh]”hï)�”}”(hŒ region size”h]”hŒ region size”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KÁhjUubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjRubj)�”}”(hhh]”hï)�”}”(hŒ2Configurable region size for the device in sectors”h]”hŒ2Configurable region size for the device in sectors”…”�”}”(hjoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KÁhjlubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjRubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjªubj )�”}”(hhh]”(j)�”}”(hhh]”hï)�”}”(hŒ#hydrated regions”h]”hŒ#hydrated regions”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KÂhjŒubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj‰ubj)�”}”(hhh]”hï)�”}”(hŒ.Number of regions that have finished hydrating”h]”hŒ.Number of regions that have finished hydrating”…”�”}”(hj¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KÂhj£ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj‰ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjªubj )�”}”(hhh]”(j)�”}”(hhh]”hï)�”}”(hŒ#total regions”h]”hŒ#total regions”…”�”}”(hjÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KÃhjÃubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÀubj)�”}”(hhh]”hï)�”}”(hŒ"Total number of regions to hydrate”h]”hŒ"Total number of regions to hydrate”…”�”}”(hjÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KÃhjÚubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÀubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjªubj )�”}”(hhh]”(j)�”}”(hhh]”hï)�”}”(hŒ#hydrating regions”h]”hŒ#hydrating regions”…”�”}”(hjýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KÄhjúubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj÷ubj)�”}”(hhh]”hï)�”}”(hŒ%Number of regions currently hydrating”h]”hŒ%Number of regions currently hydrating”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KÄhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj÷ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjªubj )�”}”(hhh]”(j)�”}”(hhh]”hï)�”}”(hŒ #feature args”h]”hŒ #feature args”…”�”}”(hj4 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KÅhj1 ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj. ubj)�”}”(hhh]”hï)�”}”(hŒ%Number of feature arguments to follow”h]”hŒ%Number of feature arguments to follow”…”�”}”(hjK h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KÅhjH ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj. ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjªubj )�”}”(hhh]”(j)�”}”(hhh]”hï)�”}”(hŒ feature args”h]”hŒ feature args”…”�”}”(hjk h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KÆhjh ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhje ubj)�”}”(hhh]”hï)�”}”(hŒ&Feature arguments, e.g. `no_hydration`”h]”(hŒFeature arguments, e.g. ”…”�”}”(hj‚ h²hh³Nh´Nubj))�”}”(hŒ`no_hydration`”h]”hŒ no_hydration”…”�”}”(hjŠ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hj‚ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KÆhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhje ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjªubj )�”}”(hhh]”(j)�”}”(hhh]”hï)�”}”(hŒ #core args”h]”hŒ #core args”…”�”}”(hj° h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KÇhj­ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjª ubj)�”}”(hhh]”hï)�”}”(hŒ'Even number of core arguments to follow”h]”hŒ'Even number of core arguments to follow”…”�”}”(hjÇ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KÇhjÄ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjª ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjªubj )�”}”(hhh]”(j)�”}”(hhh]”hï)�”}”(hŒ core args”h]”hŒ core args”…”�”}”(hjç h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KÈhjä ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjá ubj)�”}”(hhh]”hï)�”}”(hŒCKey/value pairs for tuning the core, e.g. `hydration_threshold 256`”h]”(hŒ*Key/value pairs for tuning the core, e.g. ”…”�”}”(hjþ h²hh³Nh´Nubj))�”}”(hŒ`hydration_threshold 256`”h]”hŒhydration_threshold 256”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hjþ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KÈhjû ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjá ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjªubj )�”}”(hhh]”(j)�”}”(hhh]”hï)�”}”(hŒclone metadata mode”h]”hŒclone metadata mode”…”�”}”(hj, h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KÊhj) ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj& ubj)�”}”(hhh]”(hï)�”}”(hŒ!ro if read-only, rw if read-write”h]”hŒ!ro if read-only, rw if read-write”…”�”}”(hjC h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KÊhj@ 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'. If the metadata mode changes, a dm event will be sent to user space.”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’. If the metadata mode changes, a dm event will be sent to user space.”…”�”}”(hjQ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KÌhj@ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhj& ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjªubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhj“ubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1jìhj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jçhjtubeh}”(h]”h ]”h"]”h$]”h&]”uh1jOh³hÇh´K¶hjch²hubeh}”(h]”Œstatus”ah ]”h"]”Œstatus”ah$]”h&]”uh1hÈhj§h²hh³hÇh´K´ubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒMessages”h]”hŒMessages”…”�”}”(hj� h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjŒ h²hh³hÇh´KÓubjP)�”}”(hX=`disable_hydration` Disable the background hydration of the destination device. `enable_hydration` Enable the background hydration of the destination device. `hydration_threshold <#regions>` Set background hydration threshold. `hydration_batch_size <#regions>` Set background hydration batch size. ”h]”jV)�”}”(hhh]”(j[)�”}”(hŒP`disable_hydration` Disable the background hydration of the destination device. ”h]”(ja)�”}”(hŒ`disable_hydration`”h]”j))�”}”(hjª h]”hŒdisable_hydration”…”�”}”(hj¬ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hj¨ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j`h³hÇh´KÖhj¤ ubjq)�”}”(hhh]”hï)�”}”(hŒ;Disable the background hydration of the destination device.”h]”hŒ;Disable the background hydration of the destination device.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KÖhj¿ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jphj¤ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jZh³hÇh´KÖhj¡ ubj[)�”}”(hŒN`enable_hydration` Enable the background hydration of the destination device. ”h]”(ja)�”}”(hŒ`enable_hydration`”h]”j))�”}”(hjâ h]”hŒenable_hydration”…”�”}”(hjä h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hjà ubah}”(h]”h ]”h"]”h$]”h&]”uh1j`h³hÇh´KÙhjÜ ubjq)�”}”(hhh]”hï)�”}”(hŒ:Enable the background hydration of the destination device.”h]”hŒ:Enable the background hydration of the destination device.”…”�”}”(hjú h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KÙhj÷ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jphjÜ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jZh³hÇh´KÙhj¡ ubj[)�”}”(hŒE`hydration_threshold <#regions>` Set background hydration threshold. ”h]”(ja)�”}”(hŒ `hydration_threshold <#regions>`”h]”j))�”}”(hj h]”hŒhydration_threshold <#regions>”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j`h³hÇh´KÜhj ubjq)�”}”(hhh]”hï)�”}”(hŒ#Set background hydration threshold.”h]”hŒ#Set background hydration threshold.”…”�”}”(hj2 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KÜhj/ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jphj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jZh³hÇh´KÜhj¡ ubj[)�”}”(hŒG`hydration_batch_size <#regions>` Set background hydration batch size. ”h]”(ja)�”}”(hŒ!`hydration_batch_size <#regions>`”h]”j))�”}”(hjR h]”hŒhydration_batch_size <#regions>”…”�”}”(hjT h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j(hjP ubah}”(h]”h ]”h"]”h$]”h&]”uh1j`h³hÇh´KßhjL ubjq)�”}”(hhh]”hï)�”}”(hŒ$Set background hydration batch size.”h]”hŒ$Set background hydration batch size.”…”�”}”(hjj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Kßhjg ubah}”(h]”h ]”h"]”h$]”h&]”uh1jphjL ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jZh³hÇh´Kßhj¡ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jUhj� ubah}”(h]”h ]”h"]”h$]”h&]”uh1jOh³hÇh´KÕhjŒ h²hubeh}”(h]”Œmessages”ah ]”h"]”Œmessages”ah$]”h&]”uh1hÈhj§h²hh³hÇh´KÓubeh}”(h]”Œtarget-interface”ah ]”h"]”Œtarget interface”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´K†ubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒExamples”h]”hŒExamples”…”�”}”(hj£ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj  h²hh³hÇh´KâubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ'Clone a device containing a file system”h]”hŒ'Clone a device containing a file system”…”�”}”(hj´ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj± h²hh³hÇh´Kåubjâ)�”}”(hhh]”(jç)�”}”(hŒŽCreate the dm-clone device. :: dmsetup create clone --table "0 1048576000 clone $metadata_dev $dest_dev \ $source_dev 8 1 no_hydration" ”h]”(hï)�”}”(hŒCreate the dm-clone device.”h]”hŒCreate the dm-clone device.”…”�”}”(hjÉ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KçhjÅ ubjÒ)�”}”(hŒjdmsetup create clone --table "0 1048576000 clone $metadata_dev $dest_dev \ $source_dev 8 1 no_hydration"”h]”hŒjdmsetup create clone --table "0 1048576000 clone $metadata_dev $dest_dev \ $source_dev 8 1 no_hydration"”…”�”}”hj× sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jÑh³hÇh´KëhjÅ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæhj h²hh³hÇh´Nubjç)�”}”(hŒÒMount the device and trim the file system. dm-clone interprets the discards sent by the file system and it will not hydrate the unused space. :: mount /dev/mapper/clone /mnt/cloned-fs fstrim /mnt/cloned-fs ”h]”(hï)�”}”(hŒ�Mount the device and trim the file system. dm-clone interprets the discards sent by the file system and it will not hydrate the unused space.”h]”hŒ�Mount the device and trim the file system. dm-clone interprets the discards sent by the file system and it will not hydrate the unused space.”…”�”}”(hjï h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Kîhjë ubjÒ)�”}”(hŒj¡j±jKjÂj¸jQjíj¾jrjój™jxjš j§j]j¸j† jcj’ jŒ j{ j  js j± jå j� jpjë 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”“”}”…”R”Œparse_messages”]”Œtransform_messages”]”Œ transformer”NŒ include_log”]”Œ decoration”Nh²hub.