€•¾NŒ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”Œ1/translations/zh_CN/admin-guide/device-mapper/era”Œmodname”NŒ classname”NŒ refexplicit”ˆuŒtagname”hhh ubh)”}”(hhh]”hŒChinese (Traditional)”…””}”hh2sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ1/translations/zh_TW/admin-guide/device-mapper/era”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒItalian”…””}”hhFsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ1/translations/it_IT/admin-guide/device-mapper/era”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒJapanese”…””}”hhZsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ1/translations/ja_JP/admin-guide/device-mapper/era”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒKorean”…””}”hhnsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ1/translations/ko_KR/admin-guide/device-mapper/era”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒSpanish”…””}”hh‚sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ1/translations/sp_SP/admin-guide/device-mapper/era”Œ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Œdm-era”h]”hŒdm-era”…””}”(hh¨hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¦hh£hžhhŸŒK/var/lib/git/docbuild/linux/Documentation/admin-guide/device-mapper/era.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”“”)”}”(hXdm-era is a target that behaves similar to the linear target. In addition it keeps track of which blocks were written within a user defined period of time called an 'era'. Each era target instance maintains the current era as a monotonically increasing 32-bit counter.”h]”hXdm-era is a target that behaves similar to the linear target. In addition it keeps track of which blocks were written within a user defined period of time called an ‘era’. Each era target instance maintains the current era as a monotonically increasing 32-bit counter.”…””}”(hhÊhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÈhŸh¶h Khh·hžhubhÉ)”}”(hŒ²Use cases include tracking changed blocks for backup software, and partially invalidating the contents of a cache to restore cache coherency after rolling back a vendor snapshot.”h]”hŒ²Use cases include tracking changed blocks for backup software, and partially invalidating the contents of a cache to restore cache coherency after rolling back a vendor snapshot.”…””}”(hhØ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Œ Constructor”h]”hŒ Constructor”…””}”(hhñhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¦hhîhžhhŸh¶h KubhÉ)”}”(hŒ,era ”h]”hŒ,era ”…””}”(hhÿhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÈhŸh¶h KhhîhžhubhŒ block_quote”“”)”}”(hXw================ ====================================================== metadata dev fast device holding the persistent metadata origin dev device holding data blocks that may change block size block size of origin data device, granularity that is tracked by the target ================ ====================================================== ”h]”hŒtable”“”)”}”(hhh]”hŒtgroup”“”)”}”(hhh]”(hŒcolspec”“”)”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jhjubj)”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K6uh1jhjubhŒtbody”“”)”}”(hhh]”(hŒrow”“”)”}”(hhh]”(hŒentry”“”)”}”(hhh]”hÉ)”}”(hŒ metadata dev”h]”hŒ metadata dev”…””}”(hjBhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÈhŸh¶h Khj?ubah}”(h]”h ]”h"]”h$]”h&]”uh1j=hj:ubj>)”}”(hhh]”hÉ)”}”(hŒ+fast device holding the persistent metadata”h]”hŒ+fast device holding the persistent metadata”…””}”(hjYhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÈhŸh¶h KhjVubah}”(h]”h ]”h"]”h$]”h&]”uh1j=hj:ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j8hj5ubj9)”}”(hhh]”(j>)”}”(hhh]”hÉ)”}”(hŒ origin dev”h]”hŒ origin dev”…””}”(hjyhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÈhŸh¶h Khjvubah}”(h]”h ]”h"]”h$]”h&]”uh1j=hjsubj>)”}”(hhh]”hÉ)”}”(hŒ*device holding data blocks that may change”h]”hŒ*device holding data blocks that may change”…””}”(hjhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÈhŸh¶h Khjubah}”(h]”h ]”h"]”h$]”h&]”uh1j=hjsubeh}”(h]”h ]”h"]”h$]”h&]”uh1j8hj5ubj9)”}”(hhh]”(j>)”}”(hhh]”hÉ)”}”(hŒ block size”h]”hŒ block size”…””}”(hj°hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÈhŸh¶h Khj­ubah}”(h]”h ]”h"]”h$]”h&]”uh1j=hjªubj>)”}”(hhh]”hÉ)”}”(hŒKblock size of origin data device, granularity that is tracked by the target”h]”hŒKblock size of origin data device, granularity that is tracked by the target”…””}”(hjÇhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÈhŸh¶h KhjÄubah}”(h]”h ]”h"]”h$]”h&]”uh1j=hjªubeh}”(h]”h ]”h"]”h$]”h&]”uh1j8hj5ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j3hjubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1jhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j hŸh¶h Khhîhžhubeh}”(h]”Œ constructor”ah ]”h"]”Œ constructor”ah$]”h&]”uh1h¡hh£hžhhŸh¶h Kubh¢)”}”(hhh]”(h§)”}”(hŒMessages”h]”hŒMessages”…””}”(hjhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¦hjhžhhŸh¶h KubhÉ)”}”(hŒ+None of the dm messages take any arguments.”h]”hŒ+None of the dm messages take any arguments.”…””}”(hjhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÈhŸh¶h K!hjhžhubh¢)”}”(hhh]”(h§)”}”(hŒ checkpoint”h]”hŒ checkpoint”…””}”(hj$hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¦hj!hžhhŸh¶h K$ubhÉ)”}”(hŒPossibly move to a new era. You shouldn't assume the era has incremented. After sending this message, you should check the current era via the status line.”h]”hŒŸPossibly move to a new era. You shouldn’t assume the era has incremented. After sending this message, you should check the current era via the status line.”…””}”(hj2hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÈhŸh¶h K&hj!hžhubeh}”(h]”Œ checkpoint”ah ]”h"]”Œ checkpoint”ah$]”h&]”uh1h¡hjhžhhŸh¶h K$ubh¢)”}”(hhh]”(h§)”}”(hŒtake_metadata_snap”h]”hŒtake_metadata_snap”…””}”(hjKhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¦hjHhžhhŸh¶h K+ubhÉ)”}”(hŒGCreate a clone of the metadata, to allow a userland process to read it.”h]”hŒGCreate a clone of the metadata, to allow a userland process to read it.”…””}”(hjYhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÈhŸh¶h K-hjHhžhubeh}”(h]”Œtake-metadata-snap”ah ]”h"]”Œtake_metadata_snap”ah$]”h&]”uh1h¡hjhžhhŸh¶h K+ubh¢)”}”(hhh]”(h§)”}”(hŒdrop_metadata_snap”h]”hŒdrop_metadata_snap”…””}”(hjrhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¦hjohžhhŸh¶h K0ubhÉ)”}”(hŒDrop the metadata snapshot.”h]”hŒDrop the metadata snapshot.”…””}”(hj€hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÈhŸh¶h K2hjohžhubeh}”(h]”Œdrop-metadata-snap”ah ]”h"]”Œdrop_metadata_snap”ah$]”h&]”uh1h¡hjhžhhŸh¶h K0ubeh}”(h]”Œmessages”ah ]”h"]”Œmessages”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 K5ubhÉ)”}”(hŒo <#used metadata blocks>/<#total metadata blocks> ”h]”hŒs <#used metadata blocks>/<#total metadata blocks> ”…””}”(hj¯hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÈhŸh¶h K7hjžhžhubj)”}”(hhh]”j)”}”(hhh]”(j)”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jhjÀubj)”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K.uh1jhjÀubj4)”}”(hhh]”(j9)”}”(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&]”uh1j=hjÚ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&]”uh1j=hjÚubeh}”(h]”h ]”h"]”h$]”h&]”uh1j8hj×ubj9)”}”(hhh]”(j>)”}”(hhh]”hÉ)”}”(hŒ#used metadata blocks”h]”hŒ#used metadata blocks”…””}”(hjhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÈhŸh¶h K=hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j=hjubj>)”}”(hhh]”hÉ)”}”(hŒNumber of metadata blocks used”h]”hŒNumber of metadata blocks used”…””}”(hj.hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÈhŸh¶h K=hj+ubah}”(h]”h ]”h"]”h$]”h&]”uh1j=hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j8hj×ubj9)”}”(hhh]”(j>)”}”(hhh]”hÉ)”}”(hŒ#total metadata blocks”h]”hŒ#total metadata blocks”…””}”(hjNhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÈhŸh¶h K>hjKubah}”(h]”h ]”h"]”h$]”h&]”uh1j=hjHubj>)”}”(hhh]”hÉ)”}”(hŒTotal number of metadata blocks”h]”hŒTotal number of metadata blocks”…””}”(hjehžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÈhŸh¶h K>hjbubah}”(h]”h ]”h"]”h$]”h&]”uh1j=hjHubeh}”(h]”h ]”h"]”h$]”h&]”uh1j8hj×ubj9)”}”(hhh]”(j>)”}”(hhh]”hÉ)”}”(hŒ current era”h]”hŒ current era”…””}”(hj…hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÈhŸh¶h K?hj‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1j=hjubj>)”}”(hhh]”hÉ)”}”(hŒThe current era”h]”hŒThe current era”…””}”(hjœhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÈhŸh¶h K?hj™ubah}”(h]”h ]”h"]”h$]”h&]”uh1j=hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j8hj×ubj9)”}”(hhh]”(j>)”}”(hhh]”hÉ)”}”(hŒheld metadata root”h]”hŒheld metadata root”…””}”(hj¼hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÈhŸh¶h K@hj¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1j=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”…””}”(hjÓhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÈhŸh¶h K@hjÐubah}”(h]”h ]”h"]”h$]”h&]”uh1j=hj¶ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j8hj×ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j3hjÀubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1jhj½ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjžhžhhŸh¶h Nubeh}”(h]”Œstatus”ah ]”h"]”Œstatus”ah$]”h&]”uh1h¡hh£hžhhŸh¶h K5ubh¢)”}”(hhh]”(h§)”}”(hŒDetailed use case”h]”hŒDetailed use case”…””}”(hj hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¦hjhžhhŸh¶h KFubhÉ)”}”(hŒ~The scenario of invalidating a cache when rolling back a vendor snapshot was the primary use case when developing this target:”h]”hŒ~The scenario of invalidating a cache when rolling back a vendor snapshot was the primary use case when developing this target:”…””}”(hjhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÈhŸh¶h KHhjhžhubh¢)”}”(hhh]”(h§)”}”(hŒTaking a vendor snapshot”h]”hŒTaking a vendor snapshot”…””}”(hj*hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¦hj'hžhhŸh¶h KLubhŒ bullet_list”“”)”}”(hhh]”(hŒ list_item”“”)”}”(hŒ+Send a checkpoint message to the era target”h]”hÉ)”}”(hjAh]”hŒ+Send a checkpoint message to the era target”…””}”(hjChžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÈhŸh¶h KNhj?ubah}”(h]”h ]”h"]”h$]”h&]”uh1j=hj:hžhhŸh¶h Nubj>)”}”(hŒ1Make a note of the current era in its status line”h]”hÉ)”}”(hjXh]”hŒ1Make a note of the current era in its status line”…””}”(hjZhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÈhŸh¶h KOhjVubah}”(h]”h ]”h"]”h$]”h&]”uh1j=hj:hžhhŸh¶h Nubj>)”}”(hŒNTake vendor snapshot (the era and snapshot should be forever associated now). ”h]”hÉ)”}”(hŒMTake vendor snapshot (the era and snapshot should be forever associated now).”h]”hŒMTake vendor snapshot (the era and snapshot should be forever associated now).”…””}”(hjqhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÈhŸh¶h KPhjmubah}”(h]”h ]”h"]”h$]”h&]”uh1j=hj:hžhhŸh¶h Nubeh}”(h]”h ]”h"]”h$]”h&]”Œbullet”Œ-”uh1j8hŸh¶h KNhj'hžhubeh}”(h]”Œtaking-a-vendor-snapshot”ah ]”h"]”Œtaking a vendor snapshot”ah$]”h&]”uh1h¡hjhžhhŸh¶h KLubh¢)”}”(hhh]”(h§)”}”(hŒ"Rolling back to an vendor snapshot”h]”hŒ"Rolling back to an vendor snapshot”…””}”(hj˜hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¦hj•hžhhŸh¶h KTubj9)”}”(hhh]”(j>)”}”(hŒACache enters passthrough mode (see: dm-cache's docs in cache.txt)”h]”hÉ)”}”(hj«h]”hŒCCache enters passthrough mode (see: dm-cache’s docs in cache.txt)”…””}”(hj­hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÈhŸh¶h KVhj©ubah}”(h]”h ]”h"]”h$]”h&]”uh1j=hj¦hžhhŸh¶h Nubj>)”}”(hŒRollback vendor storage”h]”hÉ)”}”(hjÂh]”hŒRollback vendor storage”…””}”(hjÄhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÈhŸh¶h KWhjÀubah}”(h]”h ]”h"]”h$]”h&]”uh1j=hj¦hžhhŸh¶h Nubj>)”}”(hŒTake metadata snapshot”h]”hÉ)”}”(hjÙh]”hŒTake metadata snapshot”…””}”(hjÛhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÈhŸh¶h KXhj×ubah}”(h]”h ]”h"]”h$]”h&]”uh1j=hj¦hžhhŸh¶h Nubj>)”}”(hŒbAscertain which blocks have been written since the snapshot was taken by checking each block's era”h]”hÉ)”}”(hŒbAscertain which blocks have been written since the snapshot was taken by checking each block's era”h]”hŒdAscertain which blocks have been written since the snapshot was taken by checking each block’s era”…””}”(hjòhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÈhŸh¶h KYhjîubah}”(h]”h ]”h"]”h$]”h&]”uh1j=hj¦hžhhŸh¶h Nubj>)”}”(hŒ/Invalidate those blocks in the caching software”h]”hÉ)”}”(hjh]”hŒ/Invalidate those blocks in the caching software”…””}”(hj hž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 Nubj>)”}”(hŒ-Cache returns to writeback/writethrough mode ”h]”hÉ)”}”(hŒ,Cache returns to writeback/writethrough mode”h]”hŒ,Cache returns to writeback/writethrough mode”…””}”(hj!hž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&]”j‹jŒuh1j8hŸh¶h KVhj•hžhubeh}”(h]”Œ"rolling-back-to-an-vendor-snapshot”ah ]”h"]”Œ"rolling back to an vendor snapshot”ah$]”h&]”uh1h¡hjhžhhŸh¶h KTubeh}”(h]”Œdetailed-use-case”ah ]”h"]”Œdetailed use case”ah$]”h&]”uh1h¡hh£hžhhŸh¶h KFubh¢)”}”(hhh]”(h§)”}”(hŒ Memory usage”h]”hŒ Memory usage”…””}”(hjNhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¦hjKhžhhŸh¶h K_ubhÉ)”}”(hŒÁThe target uses a bitset to record writes in the current era. It also has a spare bitset ready for switching over to a new era. Other than that it uses a few 4k blocks for updating metadata::”h]”hŒÀThe target uses a bitset to record writes in the current era. It also has a spare bitset ready for switching over to a new era. Other than that it uses a few 4k blocks for updating metadata:”…””}”(hj\hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÈhŸh¶h KahjKhžhubhŒ literal_block”“”)”}”(hŒ(4 * nr_blocks) bytes + buffers”h]”hŒ(4 * nr_blocks) bytes + buffers”…””}”hjlsbah}”(h]”h ]”h"]”h$]”h&]”Œ xml:space”Œpreserve”uh1jjhŸh¶h KehjKhžhubeh}”(h]”Œ memory-usage”ah ]”h"]”Œ memory usage”ah$]”h&]”uh1h¡hh£hžhhŸh¶h K_ubh¢)”}”(hhh]”(h§)”}”(hŒ Resilience”h]”hŒ Resilience”…””}”(hj‡hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¦hj„hžhhŸh¶h KhubhÉ)”}”(hŒ¦Metadata is updated on disk before a write to a previously unwritten block is performed. As such dm-era should not be effected by a hard crash such as power failure.”h]”hŒ¦Metadata is updated on disk before a write to a previously unwritten block is performed. As such dm-era should not be effected by a hard crash such as power failure.”…””}”(hj•hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÈhŸh¶h Kjhj„hžhubeh}”(h]”Œ resilience”ah ]”h"]”Œ resilience”ah$]”h&]”uh1h¡hh£hžhhŸh¶h Khubh¢)”}”(hhh]”(h§)”}”(hŒUserland tools”h]”hŒUserland tools”…””}”(hj®hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¦hj«hžhhŸh¶h KoubhÉ)”}”(hŒZUserland tools are found in the increasingly poorly named thin-provisioning-tools project:”h]”hŒZUserland tools are found in the increasingly poorly named thin-provisioning-tools project:”…””}”(hj¼hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÈhŸh¶h Kqhj«hžhubj)”}”(hŒ4https://github.com/jthornber/thin-provisioning-tools”h]”hÉ)”}”(hjÌh]”hŒ reference”“”)”}”(hjÌh]”hŒ4https://github.com/jthornber/thin-provisioning-tools”…””}”(hjÓhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”Œrefuri”jÌuh1jÑhjÎubah}”(h]”h ]”h"]”h$]”h&]”uh1hÈhŸh¶h KthjÊubah}”(h]”h ]”h"]”h$]”h&]”uh1j hŸh¶h Kthj«hžhubeh}”(h]”Œuserland-tools”ah ]”h"]”Œuserland tools”ah$]”h&]”uh1h¡hh£hžhhŸh¶h Koubeh}”(h]”Œdm-era”ah ]”h"]”Œdm-era”ah$]”h&]”uh1h¡hhhžhhŸh¶h 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”j=Œ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”}”(júj÷hëhèjÿjüj›j˜jEjBjljij“jjjjHjEj’jj@j=jj~j¨j¥jòjïuŒ nametypes”}”(jú‰hë‰jÿ‰j›‰jE‰jl‰j“‰j‰jH‰j’‰j@‰j‰j¨‰jò‰uh}”(j÷h£hèh·jühîj˜jjBj!jijHjjojjžjEjjj'j=j•j~jKj¥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”“”}”…”R”Œparse_messages”]”Œtransform_messages”]”Œ transformer”NŒ include_log”]”Œ decoration”Nhžhub.