€•L3Œ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/block/error-injection”Œ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/block/error-injection”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒItalian”…”�”}”hhFsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ)/translations/it_IT/block/error-injection”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒJapanese”…”�”}”hhZsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ)/translations/ja_JP/block/error-injection”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒKorean”…”�”}”hhnsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ)/translations/ko_KR/block/error-injection”Œ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/block/error-injection”Œ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/block/error-injection”Œ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”h]”hŒ SPDX-License-Identifier: GPL-2.0”…”�”}”hh·sbah}”(h]”h ]”h"]”h$]”h&]”Œ xml:space”Œpreserve”uh1hµhhh²hh³ŒC/var/lib/git/docbuild/linux/Documentation/block/error-injection.rst”h´KubhŒsection”“”)�”}”(hhh]”(hŒtitle”“”)�”}”(hŒConfigurable Error Injection”h]”hŒConfigurable Error Injection”…”�”}”(hhÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhhÊh²hh³hÇh´KubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒOverview”h]”hŒOverview”…”�”}”(hhàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhhÝh²hh³hÇh´KubhŒ paragraph”“”)�”}”(hŒºConfigurable error injection allows injecting specific block layer status codes for sector ranges of a block device. Errors can be injected unconditionally, or with a given probability.”h]”hŒºConfigurable error injection allows injecting specific block layer status codes for sector ranges of a block device. Errors can be injected unconditionally, or with a given probability.”…”�”}”(hhðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K hhÝh²hubhï)�”}”(hŒPTo use configurable error injection, CONFIG_BLK_ERROR_INJECTION must be enabled.”h]”hŒPTo use configurable error injection, CONFIG_BLK_ERROR_INJECTION must be enabled.”…”�”}”(hhþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KhhÝh²hubhï)�”}”(hŒÛThe only interface is the error_injection debugfs file, which is created for each registered gendisk. Writes to this file are used to create or delete rules and reads return a list of the current error injection sites.”h]”hŒÛThe only interface is the error_injection debugfs file, which is created for each registered gendisk. Writes to this file are used to create or delete rules and reads return a list of the current error injection sites.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KhhÝh²hubeh}”(h]”Œoverview”ah ]”h"]”Œoverview”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´KubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒOptions”h]”hŒOptions”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj"h²hh³hÇh´Kubhï)�”}”(hŒ-The following options specify the operations:”h]”hŒ-The following options specify the operations:”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Khj"h²hubhŒtable”“”)�”}”(hhh]”hŒtgroup”“”)�”}”(hhh]”(hŒcolspec”“”)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jKhjHubjL)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K7uh1jKhjHubhŒtbody”“”)�”}”(hhh]”(hŒrow”“”)�”}”(hhh]”(hŒentry”“”)�”}”(hhh]”hï)�”}”(hŒadd”h]”hŒadd”…”�”}”(hjph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Khjmubah}”(h]”h ]”h"]”h$]”h&]”uh1jkhjhubjl)�”}”(hhh]”hï)�”}”(hŒadd a new rule”h]”hŒadd a new rule”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Khj„ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkhjhubeh}”(h]”h ]”h"]”h$]”h&]”uh1jfhjcubjg)�”}”(hhh]”(jl)�”}”(hhh]”hï)�”}”(hŒ removeall”h]”hŒ removeall”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Khj¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkhj¡ubjl)�”}”(hhh]”hï)�”}”(hŒremove all existing rules”h]”hŒremove all existing rules”…”�”}”(hj¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Khj»ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkhj¡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jfhjcubeh}”(h]”h ]”h"]”h$]”h&]”uh1jahjHubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1jFhjCubah}”(h]”h ]”h"]”h$]”h&]”uh1jAhj"h²hh³hÇh´Nubhï)�”}”(hŒLThe following options specify the details of the rule for the add operation:”h]”hŒLThe following options specify the details of the rule for the add operation:”…”�”}”(hjëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Khj"h²hubjB)�”}”(hhh]”jG)�”}”(hhh]”(jL)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jKhjüubjL)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K7uh1jKhjüubjb)�”}”(hhh]”(jg)�”}”(hhh]”(jl)�”}”(hhh]”hï)�”}”(hŒ op=”h]”hŒ op=”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K!hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jkhjubjl)�”}”(hhh]”hï)�”}”(hŒ…block layer operation this rule applies to. This uses the XYZ for each REQ_OP_XYZ operation, e.g. READ, WRITE or DISCARD. Mandatory.”h]”hŒ…block layer operation this rule applies to. This uses the XYZ for each REQ_OP_XYZ operation, e.g. READ, WRITE or DISCARD. Mandatory.”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K!hj0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jfhjubjg)�”}”(hhh]”(jl)�”}”(hhh]”hï)�”}”(hŒstatus=”h]”hŒstatus=”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K$hjPubah}”(h]”h ]”h"]”h$]”h&]”uh1jkhjMubjl)�”}”(hhh]”hï)�”}”(hŒ\Status to return. This uses XYZ for each BLK_STS_XYZ code, e.g. IOERR or MEDIUM. Mandatory.”h]”hŒ\Status to return. This uses XYZ for each BLK_STS_XYZ code, e.g. IOERR or MEDIUM. Mandatory.”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K$hjgubah}”(h]”h ]”h"]”h$]”h&]”uh1jkhjMubeh}”(h]”h ]”h"]”h$]”h&]”uh1jfhjubjg)�”}”(hhh]”(jl)�”}”(hhh]”hï)�”}”(hŒstart=”h]”hŒstart=”…”�”}”(hjŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K&hj‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkhj„ubjl)�”}”(hhh]”hï)�”}”(hŒFFirst block layer sector the rule applies to. Optional, defaults to 0.”h]”hŒFFirst block layer sector the rule applies to. Optional, defaults to 0.”…”�”}”(hj¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K&hjžubah}”(h]”h ]”h"]”h$]”h&]”uh1jkhj„ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jfhjubjg)�”}”(hhh]”(jl)�”}”(hhh]”hï)�”}”(hŒnr_sectors=”h]”hŒnr_sectors=”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K(hj¾ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkhj»ubjl)�”}”(hhh]”hï)�”}”(hŒWNumber of sectors this rule applies. Optional, defaults to the remainder of the device.”h]”hŒWNumber of sectors this rule applies. Optional, defaults to the remainder of the device.”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K(hjÕubah}”(h]”h ]”h"]”h$]”h&]”uh1jkhj»ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jfhjubjg)�”}”(hhh]”(jl)�”}”(hhh]”hï)�”}”(hŒchance=”h]”hŒchance=”…”�”}”(hjøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K*hjõubah}”(h]”h ]”h"]”h$]”h&]”uh1jkhjòubjl)�”}”(hhh]”hï)�”}”(hŒVOnly return a failure with a likelihood of 1/chance. Optional, defaults to 1 (always).”h]”hŒVOnly return a failure with a likelihood of 1/chance. Optional, defaults to 1 (always).”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K*hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jkhjòubeh}”(h]”h ]”h"]”h$]”h&]”uh1jfhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jahjüubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1jFhjùubah}”(h]”h ]”h"]”h$]”h&]”uh1jAhj"h²hh³hÇh´Nubeh}”(h]”Œoptions”ah ]”h"]”Œoptions”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´KubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒExample”h]”hŒExample”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjDh²hh³hÇh´K/ubhï)�”}”(hŒEReturn BLK_STS_IOERR for one in 10 reads of sector 0 of /dev/nvme0n1:”h]”hŒEReturn BLK_STS_IOERR for one in 10 reads of sector 0 of /dev/nvme0n1:”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K1hjDh²hubhŒ block_quote”“”)�”}”(hŒf$ echo 'add,op=READ,start=0,status=IOERR,chance=10' > /sys/kernel/debug/block/nvme0n1/error_injection ”h]”hï)�”}”(hŒe$ echo 'add,op=READ,start=0,status=IOERR,chance=10' > /sys/kernel/debug/block/nvme0n1/error_injection”h]”hŒi$ echo ‘add,op=READ,start=0,status=IOERR,chance=10’ > /sys/kernel/debug/block/nvme0n1/error_injection”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K3hjeubah}”(h]”h ]”h"]”h$]”h&]”uh1jch³hÇh´K3hjDh²hubhï)�”}”(hŒ6Return BLK_STS_MEDIUM for every write to /dev/nvme0n1:”h]”hŒ6Return BLK_STS_MEDIUM for every write to /dev/nvme0n1:”…”�”}”(hj}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K5hjDh²hubjd)�”}”(hŒ^$ echo 'add,op=WRITE,start=0,status=MEDIUM' > /sys/kernel/debug/block/nvme0n1/error_injection ”h]”hï)�”}”(hŒ]$ echo 'add,op=WRITE,start=0,status=MEDIUM' > /sys/kernel/debug/block/nvme0n1/error_injection”h]”hŒa$ echo ‘add,op=WRITE,start=0,status=MEDIUM’ > /sys/kernel/debug/block/nvme0n1/error_injection”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K7hj‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jch³hÇh´K7hjDh²hubhï)�”}”(hŒ"Remove all rules for /dev/nvme0n1:”h]”hŒ"Remove all rules for /dev/nvme0n1:”…”�”}”(hj£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K9hjDh²hubjd)�”}”(hŒD$ echo 'removeall' > /sys/kernel/debug/block/nvme0n1/error_injection”h]”hï)�”}”(hj³h]”hŒH$ echo ‘removeall’ > /sys/kernel/debug/block/nvme0n1/error_injection”…”�”}”(hjµh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K;hj±ubah}”(h]”h ]”h"]”h$]”h&]”uh1jch³hÇh´K;hjDh²hubeh}”(h]”Œexample”ah ]”h"]”Œexample”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´K/ubeh}”(h]”Œconfigurable-error-injection”ah ]”h"]”Œconfigurable error injection”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”jkŒ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ÒjjjAj>jÍjÊuŒ nametypes”}”(jÕ‰j‰jA‰j͉uh}”(jÒhÊjhÝj>j"jÊjDuŒ 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.