€•¬/Œ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/admin-guide/aoe/examples”Œ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/admin-guide/aoe/examples”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒItalian”…””}”hhFsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ,/translations/it_IT/admin-guide/aoe/examples”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒJapanese”…””}”hhZsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ,/translations/ja_JP/admin-guide/aoe/examples”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒKorean”…””}”hhnsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ,/translations/ko_KR/admin-guide/aoe/examples”Œ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/admin-guide/aoe/examples”Œ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ŒExample of udev rules”h]”hŒExample of udev rules”…””}”(hh¨hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¦hh£hžhhŸŒF/var/lib/git/docbuild/linux/Documentation/admin-guide/aoe/examples.rst”h KubhŒ block_quote”“”)”}”(hŒ#.. include:: udev.txt :literal: ”h]”hŒ literal_block”“”)”}”(hXp# These rules tell udev what device nodes to create for aoe support. # They may be installed along the following lines. Check the section # 8 udev manpage to see whether your udev supports SUBSYSTEM, and # whether it uses one or two equal signs for SUBSYSTEM and KERNEL. # # ecashin@makki ~$ su # Password: # bash# find /etc -type f -name udev.conf # /etc/udev/udev.conf # bash# grep udev_rules= /etc/udev/udev.conf # udev_rules="/etc/udev/rules.d/" # bash# ls /etc/udev/rules.d/ # 10-wacom.rules 50-udev.rules # bash# cp /path/to/linux/Documentation/admin-guide/aoe/udev.txt \ # /etc/udev/rules.d/60-aoe.rules # # aoe char devices SUBSYSTEM=="aoe", KERNEL=="discover", NAME="etherd/%k", GROUP="disk", MODE="0220" SUBSYSTEM=="aoe", KERNEL=="err", NAME="etherd/%k", GROUP="disk", MODE="0440" SUBSYSTEM=="aoe", KERNEL=="interfaces", NAME="etherd/%k", GROUP="disk", MODE="0220" SUBSYSTEM=="aoe", KERNEL=="revalidate", NAME="etherd/%k", GROUP="disk", MODE="0220" SUBSYSTEM=="aoe", KERNEL=="flush", NAME="etherd/%k", GROUP="disk", MODE="0220" # aoe block devices KERNEL=="etherd*", GROUP="disk" ”h]”hX~# These rules tell udev what device nodes to create for aoe support. # They may be installed along the following lines. Check the section # 8 udev manpage to see whether your udev supports SUBSYSTEM, and # whether it uses one or two equal signs for SUBSYSTEM and KERNEL. # # ecashin@makki ~$ su # Password: # bash# find /etc -type f -name udev.conf # /etc/udev/udev.conf # bash# grep udev_rules= /etc/udev/udev.conf # udev_rules="/etc/udev/rules.d/" # bash# ls /etc/udev/rules.d/ # 10-wacom.rules 50-udev.rules # bash# cp /path/to/linux/Documentation/admin-guide/aoe/udev.txt \ # /etc/udev/rules.d/60-aoe.rules # # aoe char devices SUBSYSTEM=="aoe", KERNEL=="discover", NAME="etherd/%k", GROUP="disk", MODE="0220" SUBSYSTEM=="aoe", KERNEL=="err", NAME="etherd/%k", GROUP="disk", MODE="0440" SUBSYSTEM=="aoe", KERNEL=="interfaces", NAME="etherd/%k", GROUP="disk", MODE="0220" SUBSYSTEM=="aoe", KERNEL=="revalidate", NAME="etherd/%k", GROUP="disk", MODE="0220" SUBSYSTEM=="aoe", KERNEL=="flush", NAME="etherd/%k", GROUP="disk", MODE="0220" # aoe block devices KERNEL=="etherd*", GROUP="disk" ”…””}”hh¿sbah}”(h]”h ]”h"]”h$]”h&]”Œsource”Œ&Documentation/admin-guide/aoe/udev.txt”Œ xml:space”Œpreserve”uh1h½h Khh¹hŸh¶ubah}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h Khh£hžhubeh}”(h]”Œexample-of-udev-rules”ah ]”h"]”Œexample of udev rules”ah$]”h&]”uh1h¡hhhžhhŸh¶h Kubh¢)”}”(hhh]”(h§)”}”(hŒ$Example of udev install rules script”h]”hŒ$Example of udev install rules script”…””}”(hhâhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¦hhßhžhhŸh¶h Kubh¸)”}”(hŒ8.. literalinclude:: udev-install.sh :language: shell ”h]”h¾)”}”(hXT# install the aoe-specific udev rules from udev.txt into # the system's udev configuration # me="`basename $0`" # find udev.conf, often /etc/udev/udev.conf # (or environment can specify where to find udev.conf) # if test -z "$conf"; then if test -r /etc/udev/udev.conf; then conf=/etc/udev/udev.conf else conf="`find /etc -type f -name udev.conf 2> /dev/null`" if test -z "$conf" || test ! -r "$conf"; then echo "$me Error: no udev.conf found" 1>&2 exit 1 fi fi fi # find the directory where udev rules are stored, often # /etc/udev/rules.d # rules_d="`sed -n '/^udev_rules=/{ s!udev_rules=!!; s!\"!!g; p; }' $conf`" if test -z "$rules_d" ; then rules_d=/etc/udev/rules.d fi if test ! -d "$rules_d"; then echo "$me Error: cannot find udev rules directory" 1>&2 exit 1 fi sh -xc "cp `dirname $0`/udev.txt $rules_d/60-aoe.rules" ”h]”hXT# install the aoe-specific udev rules from udev.txt into # the system's udev configuration # me="`basename $0`" # find udev.conf, often /etc/udev/udev.conf # (or environment can specify where to find udev.conf) # if test -z "$conf"; then if test -r /etc/udev/udev.conf; then conf=/etc/udev/udev.conf else conf="`find /etc -type f -name udev.conf 2> /dev/null`" if test -z "$conf" || test ! -r "$conf"; then echo "$me Error: no udev.conf found" 1>&2 exit 1 fi fi fi # find the directory where udev rules are stored, often # /etc/udev/rules.d # rules_d="`sed -n '/^udev_rules=/{ s!udev_rules=!!; s!\"!!g; p; }' $conf`" if test -z "$rules_d" ; then rules_d=/etc/udev/rules.d fi if test ! -d "$rules_d"; then echo "$me Error: cannot find udev rules directory" 1>&2 exit 1 fi sh -xc "cp `dirname $0`/udev.txt $rules_d/60-aoe.rules" ”…””}”hhôsbah}”(h]”h ]”h"]”h$]”h&]”Œsource”ŒI/var/lib/git/docbuild/linux/Documentation/admin-guide/aoe/udev-install.sh”hÏhÐŒforce”‰Œlanguage”Œshell”Œhighlight_args”}”Œ linenostart”Ksuh1h½hŸh¶h K hhðubah}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h K hhßhžhubeh}”(h]”Œ$example-of-udev-install-rules-script”ah ]”h"]”Œ$example of udev install rules script”ah$]”h&]”uh1h¡hhhžhhŸh¶h Kubh¢)”}”(hhh]”(h§)”}”(hŒExample script to get status”h]”hŒExample script to get status”…””}”(hjhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¦hjhžhhŸh¶h Kubh¸)”}”(hŒ2.. literalinclude:: status.sh :language: shell ”h]”h¾)”}”(hX¶#! /bin/sh # collate and present sysfs information about AoE storage # # A more complete version of this script is aoe-stat, in the # aoetools. set -e format="%8s\t%8s\t%8s\n" me=`basename $0` sysd=${sysfs_dir:-/sys} # printf "$format" device mac netif state # Suse 9.1 Pro doesn't put /sys in /etc/mtab #test -z "`mount | grep sysfs`" && { test ! -d "$sysd/block" && { echo "$me Error: sysfs is not mounted" 1>&2 exit 1 } for d in `ls -d $sysd/block/etherd* 2>/dev/null | grep -v p` end; do # maybe ls comes up empty, so we use "end" test $d = end && continue dev=`echo "$d" | sed 's/.*!//'` printf "$format" \ "$dev" \ "`cat \"$d/netif\"`" \ "`cat \"$d/state\"`" done | sort ”h]”hX¶#! /bin/sh # collate and present sysfs information about AoE storage # # A more complete version of this script is aoe-stat, in the # aoetools. set -e format="%8s\t%8s\t%8s\n" me=`basename $0` sysd=${sysfs_dir:-/sys} # printf "$format" device mac netif state # Suse 9.1 Pro doesn't put /sys in /etc/mtab #test -z "`mount | grep sysfs`" && { test ! -d "$sysd/block" && { echo "$me Error: sysfs is not mounted" 1>&2 exit 1 } for d in `ls -d $sysd/block/etherd* 2>/dev/null | grep -v p` end; do # maybe ls comes up empty, so we use "end" test $d = end && continue dev=`echo "$d" | sed 's/.*!//'` printf "$format" \ "$dev" \ "`cat \"$d/netif\"`" \ "`cat \"$d/state\"`" done | sort ”…””}”hj-sbah}”(h]”h ]”h"]”h$]”h&]”Œsource”ŒC/var/lib/git/docbuild/linux/Documentation/admin-guide/aoe/status.sh”hÏhÐj‰jŒshell”j}”j Ksuh1h½hŸh¶h Khj)ubah}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h Khjhžhubeh}”(h]”Œexample-script-to-get-status”ah ]”h"]”Œexample script to get status”ah$]”h&]”uh1h¡hhhžhhŸh¶h Kubh¢)”}”(hhh]”(h§)”}”(hŒExample of AoE autoload script”h]”hŒExample of AoE autoload script”…””}”(hjPhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¦hjMhžhhŸh¶h Kubh¸)”}”(hŒ3.. literalinclude:: autoload.sh :language: shell”h]”h¾)”}”(hXW#!/bin/sh # set aoe to autoload by installing the # aliases in /etc/modprobe.d/ f=/etc/modprobe.d/aoe.conf if test ! -r $f || test ! -w $f; then echo "cannot configure $f for module autoloading" 1>&2 exit 1 fi grep major-152 $f >/dev/null if [ $? = 1 ]; then echo alias block-major-152 aoe >> $f echo alias char-major-152 aoe >> $f fi ”h]”hXW#!/bin/sh # set aoe to autoload by installing the # aliases in /etc/modprobe.d/ f=/etc/modprobe.d/aoe.conf if test ! -r $f || test ! -w $f; then echo "cannot configure $f for module autoloading" 1>&2 exit 1 fi grep major-152 $f >/dev/null if [ $? = 1 ]; then echo alias block-major-152 aoe >> $f echo alias char-major-152 aoe >> $f fi ”…””}”hjbsbah}”(h]”h ]”h"]”h$]”h&]”Œsource”ŒE/var/lib/git/docbuild/linux/Documentation/admin-guide/aoe/autoload.sh”hÏhÐj‰jŒshell”j}”j Ksuh1h½hŸh¶h Khj^ubah}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h KhjMhžhubeh}”(h]”Œexample-of-aoe-autoload-script”ah ]”h"]”Œexample of aoe autoload script”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”}”(hÜhÙjjjJjGjj|uŒ nametypes”}”(h܉j‰jJ‰j‰uh}”(hÙh£jhßjGjj|jMuŒ 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.