€•ïRŒ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/pr”Œ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/pr”Œ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/pr”Œ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/pr”Œ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/pr”Œ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/pr”Œ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Œ/Block layer support for Persistent Reservations”h]”hŒ/Block layer support for Persistent Reservations”…””}”(hh¨hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¦hh£hžhhŸŒ6/var/lib/git/docbuild/linux/Documentation/block/pr.rst”h KubhŒ paragraph”“”)”}”(hXThe Linux kernel supports a user space interface for simplified Persistent Reservations which map to block devices that support these (like SCSI). Persistent Reservations allow restricting access to block devices to specific initiators in a shared storage setup.”h]”hXThe Linux kernel supports a user space interface for simplified Persistent Reservations which map to block devices that support these (like SCSI). Persistent Reservations allow restricting access to block devices to specific initiators in a shared storage setup.”…””}”(hh¹hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h Khh£hžhubh¸)”}”(hXThis document gives a general overview of the support ioctl commands. For a more detailed reference please refer to the SCSI Primary Commands standard, specifically the section on Reservations and the "PERSISTENT RESERVE IN" and "PERSISTENT RESERVE OUT" commands.”h]”hXThis document gives a general overview of the support ioctl commands. For a more detailed reference please refer to the SCSI Primary Commands standard, specifically the section on Reservations and the “PERSISTENT RESERVE IN†and “PERSISTENT RESERVE OUT†commands.”…””}”(hhÇhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h K hh£hžhubh¸)”}”(hŒ×All implementations are expected to ensure the reservations survive a power loss and cover all connections in a multi path environment. These behaviors are optional in SPC but will be automatically applied by Linux.”h]”hŒ×All implementations are expected to ensure the reservations survive a power loss and cover all connections in a multi path environment. These behaviors are optional in SPC but will be automatically applied by Linux.”…””}”(hhÕhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h Khh£hžhubh¢)”}”(hhh]”(h§)”}”(hŒ2The following types of reservations are supported:”h]”hŒ2The following types of reservations are supported:”…””}”(hhæhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¦hhãhžhhŸh¶h KubhŒ block_quote”“”)”}”(hX}- PR_WRITE_EXCLUSIVE Only the initiator that owns the reservation can write to the device. Any initiator can read from the device. - PR_EXCLUSIVE_ACCESS Only the initiator that owns the reservation can access the device. - PR_WRITE_EXCLUSIVE_REG_ONLY Only initiators with a registered key can write to the device, Any initiator can read from the device. - PR_EXCLUSIVE_ACCESS_REG_ONLY Only initiators with a registered key can access the device. - PR_WRITE_EXCLUSIVE_ALL_REGS Only initiators with a registered key can write to the device, Any initiator can read from the device. All initiators with a registered key are considered reservation holders. Please reference the SPC spec on the meaning of a reservation holder if you want to use this type. - PR_EXCLUSIVE_ACCESS_ALL_REGS Only initiators with a registered key can access the device. All initiators with a registered key are considered reservation holders. Please reference the SPC spec on the meaning of a reservation holder if you want to use this type. ”h]”hŒ bullet_list”“”)”}”(hhh]”(hŒ list_item”“”)”}”(hŒŒPR_WRITE_EXCLUSIVE Only the initiator that owns the reservation can write to the device. Any initiator can read from the device. ”h]”hŒdefinition_list”“”)”}”(hhh]”hŒdefinition_list_item”“”)”}”(hŒ‚PR_WRITE_EXCLUSIVE Only the initiator that owns the reservation can write to the device. Any initiator can read from the device. ”h]”(hŒterm”“”)”}”(hŒPR_WRITE_EXCLUSIVE”h]”hŒPR_WRITE_EXCLUSIVE”…””}”(hjhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhŸh¶h Khj ubhŒ definition”“”)”}”(hhh]”h¸)”}”(hŒnOnly the initiator that owns the reservation can write to the device. Any initiator can read from the device.”h]”hŒnOnly the initiator that owns the reservation can write to the device. Any initiator can read from the device.”…””}”(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&]”uh1j hŸh¶h Khjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿhhüubj)”}”(hŒbPR_EXCLUSIVE_ACCESS Only the initiator that owns the reservation can access the device. ”h]”j)”}”(hhh]”j )”}”(hŒXPR_EXCLUSIVE_ACCESS Only the initiator that owns the reservation can access the device. ”h]”(j)”}”(hŒPR_EXCLUSIVE_ACCESS”h]”hŒPR_EXCLUSIVE_ACCESS”…””}”(hjVhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhŸh¶h KhjRubj!)”}”(hhh]”h¸)”}”(hŒCOnly the initiator that owns the reservation can access the device.”h]”hŒCOnly the initiator that owns the reservation can access the device.”…””}”(hjghžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h Khjdubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjRubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hŸh¶h KhjOubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjKubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿhhüubj)”}”(hŒPR_WRITE_EXCLUSIVE_REG_ONLY Only initiators with a registered key can write to the device, Any initiator can read from the device. ”h]”j)”}”(hhh]”j )”}”(hŒƒPR_WRITE_EXCLUSIVE_REG_ONLY Only initiators with a registered key can write to the device, Any initiator can read from the device. ”h]”(j)”}”(hŒPR_WRITE_EXCLUSIVE_REG_ONLY”h]”hŒPR_WRITE_EXCLUSIVE_REG_ONLY”…””}”(hj˜hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhŸh¶h K#hj”ubj!)”}”(hhh]”h¸)”}”(hŒfOnly initiators with a registered key can write to the device, Any initiator can read from the device.”h]”hŒfOnly initiators with a registered key can write to the device, Any initiator can read from the device.”…””}”(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&]”uh1j hŸh¶h K#hj‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿhhüubj)”}”(hŒ_PR_EXCLUSIVE_ACCESS_REG_ONLY Only initiators with a registered key can access the device. ”h]”j)”}”(hhh]”j )”}”(hŒZPR_EXCLUSIVE_ACCESS_REG_ONLY Only initiators with a registered key can access the device. ”h]”(j)”}”(hŒPR_EXCLUSIVE_ACCESS_REG_ONLY”h]”hŒPR_EXCLUSIVE_ACCESS_REG_ONLY”…””}”(hjÚhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhŸh¶h K&hjÖubj!)”}”(hhh]”h¸)”}”(hŒhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h K[hj-hžhubeh}”(h]”Œioc-pr-preempt”ah ]”h"]”Œ4. ioc_pr_preempt”ah$]”h&]”uh1h¡hj™hžhhŸh¶h KYubh¢)”}”(hhh]”(h§)”}”(hŒ5. IOC_PR_PREEMPT_ABORT”h]”hŒ5. IOC_PR_PREEMPT_ABORT”…””}”(hjWhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¦hjThžhhŸh¶h Kaubh¸)”}”(hŒThis ioctl command works like IOC_PR_PREEMPT except that it also aborts any outstanding command sent over a connection identified by old_key.”h]”hŒThis ioctl command works like IOC_PR_PREEMPT except that it also aborts any outstanding command sent over a connection identified by old_key.”…””}”(hjehžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h KchjThžhubeh}”(h]”Œioc-pr-preempt-abort”ah ]”h"]”Œ5. ioc_pr_preempt_abort”ah$]”h&]”uh1h¡hj™hžhhŸh¶h Kaubh¢)”}”(hhh]”(h§)”}”(hŒ6. IOC_PR_CLEAR”h]”hŒ6. IOC_PR_CLEAR”…””}”(hj~hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¦hj{hžhhŸh¶h Kgubh¸)”}”(hŒ„This ioctl command unregisters both key and any other reservation key registered with the device and drops any existing reservation.”h]”hŒ„This ioctl command unregisters both key and any other reservation key registered with the device and drops any existing reservation.”…””}”(hjŒhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h Kihj{hžhubeh}”(h]”Œ ioc-pr-clear”ah ]”h"]”Œ6. ioc_pr_clear”ah$]”h&]”uh1h¡hj™hžhhŸh¶h Kgubeh}”(h]”Œ!the-following-ioctl-are-supported”ah ]”h"]”Œ"the following ioctl are supported:”ah$]”h&]”uh1h¡hh£hžhhŸh¶h K:ubh¢)”}”(hhh]”(h§)”}”(hŒFlags”h]”hŒFlags”…””}”(hj­hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¦hjªhžhhŸh¶h Knubh¸)”}”(hŒHAll the ioctls have a flag field. Currently only one flag is supported:”h]”hŒHAll the ioctls have a flag field. Currently only one flag is supported:”…””}”(hj»hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h Kphjªhžhubhõ)”}”(hŒ¿- PR_FL_IGNORE_KEY Ignore the existing reservation key. This is commonly supported for IOC_PR_REGISTER, and some implementation may support the flag for IOC_PR_RESERVE. ”h]”hû)”}”(hhh]”j)”}”(hŒ·PR_FL_IGNORE_KEY Ignore the existing reservation key. This is commonly supported for IOC_PR_REGISTER, and some implementation may support the flag for IOC_PR_RESERVE. ”h]”j)”}”(hhh]”j )”}”(hŒ¨PR_FL_IGNORE_KEY Ignore the existing reservation key. This is commonly supported for IOC_PR_REGISTER, and some implementation may support the flag for IOC_PR_RESERVE. ”h]”(j)”}”(hŒPR_FL_IGNORE_KEY”h]”hŒPR_FL_IGNORE_KEY”…””}”(hjÛhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhŸh¶h Kuhj×ubj!)”}”(hhh]”h¸)”}”(hŒ–Ignore the existing reservation key. This is commonly supported for IOC_PR_REGISTER, and some implementation may support the flag for IOC_PR_RESERVE.”h]”hŒ–Ignore the existing reservation key. This is commonly supported for IOC_PR_REGISTER, and some implementation may support the flag for IOC_PR_RESERVE.”…””}”(hjìhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h Kshjéubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj×ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hŸh¶h KuhjÔubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÐubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿhjÍubah}”(h]”h ]”h"]”h$]”h&]”j‰jŠuh1húhŸh¶h KrhjÉubah}”(h]”h ]”h"]”h$]”h&]”uh1hôhŸh¶h Krhjªhžhubh¸)”}”(hŒ9For all unknown flags the kernel will return -EOPNOTSUPP.”h]”hŒ9For all unknown flags the kernel will return -EOPNOTSUPP.”…””}”(hjhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h Kwhjªhžhubeh}”(h]”Œflags”ah ]”h"]”Œflags”ah$]”h&]”uh1h¡hh£hžhhŸh¶h Knubeh}”(h]”Œ/block-layer-support-for-persistent-reservations”ah ]”h"]”Œ/block layer support for persistent reservations”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”Œ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”}”(j9j6j–j“j§j¤jÜjÙjjj*j'jQjNjxjujŸjœj1j.uŒ nametypes”}”(j9‰j–‰j§‰j܉j‰j*‰jQ‰jx‰jŸ‰j1‰uh}”(j6h£j“hãj¤j™jÙjªjjßj'jjNj-jujTjœ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.