€•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”…””}”(hjh²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.