aboutsummaryrefslogtreecommitdiffstats
path: root/Documentation/aoe
diff options
context:
space:
mode:
Diffstat (limited to 'Documentation/aoe')
-rw-r--r--Documentation/aoe/aoe.txt91
-rw-r--r--Documentation/aoe/autoload.sh17
-rw-r--r--Documentation/aoe/mkdevs.sh36
-rw-r--r--Documentation/aoe/mkshelf.sh25
-rw-r--r--Documentation/aoe/status.sh31
-rw-r--r--Documentation/aoe/udev-install.sh26
-rw-r--r--Documentation/aoe/udev.txt23
7 files changed, 249 insertions, 0 deletions
diff --git a/Documentation/aoe/aoe.txt b/Documentation/aoe/aoe.txt
new file mode 100644
index 000000000000..43e50108d0e2
--- /dev/null
+++ b/Documentation/aoe/aoe.txt
@@ -0,0 +1,91 @@
1The EtherDrive (R) HOWTO for users of 2.6 kernels is found at ...
2
3 http://www.coraid.com/support/linux/EtherDrive-2.6-HOWTO.html
4
5 It has many tips and hints!
6
7CREATING DEVICE NODES
8
9 Users of udev should find the block device nodes created
10 automatically, but to create all the necessary device nodes, use the
11 udev configuration rules provided in udev.txt (in this directory).
12
13 There is a udev-install.sh script that shows how to install these
14 rules on your system.
15
16 If you are not using udev, two scripts are provided in
17 Documentation/aoe as examples of static device node creation for
18 using the aoe driver.
19
20 rm -rf /dev/etherd
21 sh Documentation/aoe/mkdevs.sh /dev/etherd
22
23 ... or to make just one shelf's worth of block device nodes ...
24
25 sh Documentation/aoe/mkshelf.sh /dev/etherd 0
26
27 There is also an autoload script that shows how to edit
28 /etc/modprobe.conf to ensure that the aoe module is loaded when
29 necessary.
30
31USING DEVICE NODES
32
33 "cat /dev/etherd/err" blocks, waiting for error diagnostic output,
34 like any retransmitted packets.
35
36 "echo eth2 eth4 > /dev/etherd/interfaces" tells the aoe driver to
37 limit ATA over Ethernet traffic to eth2 and eth4. AoE traffic from
38 untrusted networks should be ignored as a matter of security.
39
40 "echo > /dev/etherd/discover" tells the driver to find out what AoE
41 devices are available.
42
43 These character devices may disappear and be replaced by sysfs
44 counterparts, so distribution maintainers are encouraged to create
45 scripts that use these devices.
46
47 The block devices are named like this:
48
49 e{shelf}.{slot}
50 e{shelf}.{slot}p{part}
51
52 ... so that "e0.2" is the third blade from the left (slot 2) in the
53 first shelf (shelf address zero). That's the whole disk. The first
54 partition on that disk would be "e0.2p1".
55
56USING SYSFS
57
58 Each aoe block device in /sys/block has the extra attributes of
59 state, mac, and netif. The state attribute is "up" when the device
60 is ready for I/O and "down" if detected but unusable. The
61 "down,closewait" state shows that the device is still open and
62 cannot come up again until it has been closed.
63
64 The mac attribute is the ethernet address of the remote AoE device.
65 The netif attribute is the network interface on the localhost
66 through which we are communicating with the remote AoE device.
67
68 There is a script in this directory that formats this information
69 in a convenient way.
70
71 root@makki root# sh Documentation/aoe/status.sh
72 e10.0 eth3 up
73 e10.1 eth3 up
74 e10.2 eth3 up
75 e10.3 eth3 up
76 e10.4 eth3 up
77 e10.5 eth3 up
78 e10.6 eth3 up
79 e10.7 eth3 up
80 e10.8 eth3 up
81 e10.9 eth3 up
82 e4.0 eth1 up
83 e4.1 eth1 up
84 e4.2 eth1 up
85 e4.3 eth1 up
86 e4.4 eth1 up
87 e4.5 eth1 up
88 e4.6 eth1 up
89 e4.7 eth1 up
90 e4.8 eth1 up
91 e4.9 eth1 up
diff --git a/Documentation/aoe/autoload.sh b/Documentation/aoe/autoload.sh
new file mode 100644
index 000000000000..78dad1334c6f
--- /dev/null
+++ b/Documentation/aoe/autoload.sh
@@ -0,0 +1,17 @@
1#!/bin/sh
2# set aoe to autoload by installing the
3# aliases in /etc/modprobe.conf
4
5f=/etc/modprobe.conf
6
7if test ! -r $f || test ! -w $f; then
8 echo "cannot configure $f for module autoloading" 1>&2
9 exit 1
10fi
11
12grep major-152 $f >/dev/null
13if [ $? = 1 ]; then
14 echo alias block-major-152 aoe >> $f
15 echo alias char-major-152 aoe >> $f
16fi
17
diff --git a/Documentation/aoe/mkdevs.sh b/Documentation/aoe/mkdevs.sh
new file mode 100644
index 000000000000..6ce70703eb47
--- /dev/null
+++ b/Documentation/aoe/mkdevs.sh
@@ -0,0 +1,36 @@
1#!/bin/sh
2
3n_shelves=${n_shelves:-10}
4n_partitions=${n_partitions:-16}
5
6if test "$#" != "1"; then
7 echo "Usage: sh `basename $0` {dir}" 1>&2
8 exit 1
9fi
10dir=$1
11
12MAJOR=152
13
14echo "Creating AoE devnode files in $dir ..."
15
16set -e
17
18mkdir -p $dir
19
20# (Status info is in sysfs. See status.sh.)
21# rm -f $dir/stat
22# mknod -m 0400 $dir/stat c $MAJOR 1
23rm -f $dir/err
24mknod -m 0400 $dir/err c $MAJOR 2
25rm -f $dir/discover
26mknod -m 0200 $dir/discover c $MAJOR 3
27rm -f $dir/interfaces
28mknod -m 0200 $dir/interfaces c $MAJOR 4
29
30export n_partitions
31mkshelf=`echo $0 | sed 's!mkdevs!mkshelf!'`
32i=0
33while test $i -lt $n_shelves; do
34 sh -xc "sh $mkshelf $dir $i"
35 i=`expr $i + 1`
36done
diff --git a/Documentation/aoe/mkshelf.sh b/Documentation/aoe/mkshelf.sh
new file mode 100644
index 000000000000..40932836bb80
--- /dev/null
+++ b/Documentation/aoe/mkshelf.sh
@@ -0,0 +1,25 @@
1#! /bin/sh
2
3if test "$#" != "2"; then
4 echo "Usage: sh `basename $0` {dir} {shelfaddress}" 1>&2
5 exit 1
6fi
7n_partitions=${n_partitions:-16}
8dir=$1
9shelf=$2
10MAJOR=152
11
12set -e
13
14minor=`echo 10 \* $shelf \* $n_partitions | bc`
15endp=`echo $n_partitions - 1 | bc`
16for slot in `seq 0 9`; do
17 for part in `seq 0 $endp`; do
18 name=e$shelf.$slot
19 test "$part" != "0" && name=${name}p$part
20 rm -f $dir/$name
21 mknod -m 0660 $dir/$name b $MAJOR $minor
22
23 minor=`expr $minor + 1`
24 done
25done
diff --git a/Documentation/aoe/status.sh b/Documentation/aoe/status.sh
new file mode 100644
index 000000000000..6628116d4a9f
--- /dev/null
+++ b/Documentation/aoe/status.sh
@@ -0,0 +1,31 @@
1#! /bin/sh
2# collate and present sysfs information about AoE storage
3
4set -e
5format="%8s\t%8s\t%8s\n"
6me=`basename $0`
7sysd=${sysfs_dir:-/sys}
8
9# printf "$format" device mac netif state
10
11# Suse 9.1 Pro doesn't put /sys in /etc/mtab
12#test -z "`mount | grep sysfs`" && {
13test ! -d "$sysd/block" && {
14 echo "$me Error: sysfs is not mounted" 1>&2
15 exit 1
16}
17test -z "`lsmod | grep '^aoe'`" && {
18 echo "$me Error: aoe module is not loaded" 1>&2
19 exit 1
20}
21
22for d in `ls -d $sysd/block/etherd* 2>/dev/null | grep -v p` end; do
23 # maybe ls comes up empty, so we use "end"
24 test $d = end && continue
25
26 dev=`echo "$d" | sed 's/.*!//'`
27 printf "$format" \
28 "$dev" \
29 "`cat \"$d/netif\"`" \
30 "`cat \"$d/state\"`"
31done | sort
diff --git a/Documentation/aoe/udev-install.sh b/Documentation/aoe/udev-install.sh
new file mode 100644
index 000000000000..861a27f98771
--- /dev/null
+++ b/Documentation/aoe/udev-install.sh
@@ -0,0 +1,26 @@
1# install the aoe-specific udev rules from udev.txt into
2# the system's udev configuration
3#
4
5me="`basename $0`"
6
7# find udev.conf, often /etc/udev/udev.conf
8# (or environment can specify where to find udev.conf)
9#
10if test -z "$conf"; then
11 if test -r /etc/udev/udev.conf; then
12 conf=/etc/udev/udev.conf
13 else
14 conf="`find /etc -type f -name udev.conf 2> /dev/null`"
15 if test -z "$conf" || test ! -r "$conf"; then
16 echo "$me Error: no udev.conf found" 1>&2
17 exit 1
18 fi
19 fi
20fi
21
22# find the directory where udev rules are stored, often
23# /etc/udev/rules.d
24#
25rules_d="`sed -n '/^udev_rules=/{ s!udev_rules=!!; s!\"!!g; p; }' $conf`"
26test "$rules_d" && sh -xc "cp `dirname $0`/udev.txt $rules_d/60-aoe.rules"
diff --git a/Documentation/aoe/udev.txt b/Documentation/aoe/udev.txt
new file mode 100644
index 000000000000..ab39d8bb634c
--- /dev/null
+++ b/Documentation/aoe/udev.txt
@@ -0,0 +1,23 @@
1# These rules tell udev what device nodes to create for aoe support.
2# They may be installed along the following lines (adjusted to what
3# you see on your system).
4#
5# ecashin@makki ~$ su
6# Password:
7# bash# find /etc -type f -name udev.conf
8# /etc/udev/udev.conf
9# bash# grep udev_rules= /etc/udev/udev.conf
10# udev_rules="/etc/udev/rules.d/"
11# bash# ls /etc/udev/rules.d/
12# 10-wacom.rules 50-udev.rules
13# bash# cp /path/to/linux-2.6.xx/Documentation/aoe/udev.txt \
14# /etc/udev/rules.d/60-aoe.rules
15#
16
17# aoe char devices
18SUBSYSTEM="aoe", KERNEL="discover", NAME="etherd/%k", GROUP="disk", MODE="0220"
19SUBSYSTEM="aoe", KERNEL="err", NAME="etherd/%k", GROUP="disk", MODE="0440"
20SUBSYSTEM="aoe", KERNEL="interfaces", NAME="etherd/%k", GROUP="disk", MODE="0220"
21
22# aoe block devices
23KERNEL="etherd*", NAME="%k", GROUP="disk"