Linux-2.6.12-rc2
Initial git repository build. I'm not bothering with the full history, even though we have it. We can create a separate "historical" git archive of that later if we want to, and in the meantime it's about 3.2GB when imported into git - space that would just make the early git days unnecessarily complicated, when we don't have a lot of good infrastructure for it. Let it rip!
This commit is contained in:
91
Documentation/aoe/aoe.txt
Normal file
91
Documentation/aoe/aoe.txt
Normal file
@@ -0,0 +1,91 @@
|
||||
The EtherDrive (R) HOWTO for users of 2.6 kernels is found at ...
|
||||
|
||||
http://www.coraid.com/support/linux/EtherDrive-2.6-HOWTO.html
|
||||
|
||||
It has many tips and hints!
|
||||
|
||||
CREATING DEVICE NODES
|
||||
|
||||
Users of udev should find the block device nodes created
|
||||
automatically, but to create all the necessary device nodes, use the
|
||||
udev configuration rules provided in udev.txt (in this directory).
|
||||
|
||||
There is a udev-install.sh script that shows how to install these
|
||||
rules on your system.
|
||||
|
||||
If you are not using udev, two scripts are provided in
|
||||
Documentation/aoe as examples of static device node creation for
|
||||
using the aoe driver.
|
||||
|
||||
rm -rf /dev/etherd
|
||||
sh Documentation/aoe/mkdevs.sh /dev/etherd
|
||||
|
||||
... or to make just one shelf's worth of block device nodes ...
|
||||
|
||||
sh Documentation/aoe/mkshelf.sh /dev/etherd 0
|
||||
|
||||
There is also an autoload script that shows how to edit
|
||||
/etc/modprobe.conf to ensure that the aoe module is loaded when
|
||||
necessary.
|
||||
|
||||
USING DEVICE NODES
|
||||
|
||||
"cat /dev/etherd/err" blocks, waiting for error diagnostic output,
|
||||
like any retransmitted packets.
|
||||
|
||||
"echo eth2 eth4 > /dev/etherd/interfaces" tells the aoe driver to
|
||||
limit ATA over Ethernet traffic to eth2 and eth4. AoE traffic from
|
||||
untrusted networks should be ignored as a matter of security.
|
||||
|
||||
"echo > /dev/etherd/discover" tells the driver to find out what AoE
|
||||
devices are available.
|
||||
|
||||
These character devices may disappear and be replaced by sysfs
|
||||
counterparts, so distribution maintainers are encouraged to create
|
||||
scripts that use these devices.
|
||||
|
||||
The block devices are named like this:
|
||||
|
||||
e{shelf}.{slot}
|
||||
e{shelf}.{slot}p{part}
|
||||
|
||||
... so that "e0.2" is the third blade from the left (slot 2) in the
|
||||
first shelf (shelf address zero). That's the whole disk. The first
|
||||
partition on that disk would be "e0.2p1".
|
||||
|
||||
USING SYSFS
|
||||
|
||||
Each aoe block device in /sys/block has the extra attributes of
|
||||
state, mac, and netif. The state attribute is "up" when the device
|
||||
is ready for I/O and "down" if detected but unusable. The
|
||||
"down,closewait" state shows that the device is still open and
|
||||
cannot come up again until it has been closed.
|
||||
|
||||
The mac attribute is the ethernet address of the remote AoE device.
|
||||
The netif attribute is the network interface on the localhost
|
||||
through which we are communicating with the remote AoE device.
|
||||
|
||||
There is a script in this directory that formats this information
|
||||
in a convenient way.
|
||||
|
||||
root@makki root# sh Documentation/aoe/status.sh
|
||||
e10.0 eth3 up
|
||||
e10.1 eth3 up
|
||||
e10.2 eth3 up
|
||||
e10.3 eth3 up
|
||||
e10.4 eth3 up
|
||||
e10.5 eth3 up
|
||||
e10.6 eth3 up
|
||||
e10.7 eth3 up
|
||||
e10.8 eth3 up
|
||||
e10.9 eth3 up
|
||||
e4.0 eth1 up
|
||||
e4.1 eth1 up
|
||||
e4.2 eth1 up
|
||||
e4.3 eth1 up
|
||||
e4.4 eth1 up
|
||||
e4.5 eth1 up
|
||||
e4.6 eth1 up
|
||||
e4.7 eth1 up
|
||||
e4.8 eth1 up
|
||||
e4.9 eth1 up
|
17
Documentation/aoe/autoload.sh
Normal file
17
Documentation/aoe/autoload.sh
Normal file
@@ -0,0 +1,17 @@
|
||||
#!/bin/sh
|
||||
# set aoe to autoload by installing the
|
||||
# aliases in /etc/modprobe.conf
|
||||
|
||||
f=/etc/modprobe.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
|
||||
|
36
Documentation/aoe/mkdevs.sh
Normal file
36
Documentation/aoe/mkdevs.sh
Normal file
@@ -0,0 +1,36 @@
|
||||
#!/bin/sh
|
||||
|
||||
n_shelves=${n_shelves:-10}
|
||||
n_partitions=${n_partitions:-16}
|
||||
|
||||
if test "$#" != "1"; then
|
||||
echo "Usage: sh `basename $0` {dir}" 1>&2
|
||||
exit 1
|
||||
fi
|
||||
dir=$1
|
||||
|
||||
MAJOR=152
|
||||
|
||||
echo "Creating AoE devnode files in $dir ..."
|
||||
|
||||
set -e
|
||||
|
||||
mkdir -p $dir
|
||||
|
||||
# (Status info is in sysfs. See status.sh.)
|
||||
# rm -f $dir/stat
|
||||
# mknod -m 0400 $dir/stat c $MAJOR 1
|
||||
rm -f $dir/err
|
||||
mknod -m 0400 $dir/err c $MAJOR 2
|
||||
rm -f $dir/discover
|
||||
mknod -m 0200 $dir/discover c $MAJOR 3
|
||||
rm -f $dir/interfaces
|
||||
mknod -m 0200 $dir/interfaces c $MAJOR 4
|
||||
|
||||
export n_partitions
|
||||
mkshelf=`echo $0 | sed 's!mkdevs!mkshelf!'`
|
||||
i=0
|
||||
while test $i -lt $n_shelves; do
|
||||
sh -xc "sh $mkshelf $dir $i"
|
||||
i=`expr $i + 1`
|
||||
done
|
25
Documentation/aoe/mkshelf.sh
Normal file
25
Documentation/aoe/mkshelf.sh
Normal file
@@ -0,0 +1,25 @@
|
||||
#! /bin/sh
|
||||
|
||||
if test "$#" != "2"; then
|
||||
echo "Usage: sh `basename $0` {dir} {shelfaddress}" 1>&2
|
||||
exit 1
|
||||
fi
|
||||
n_partitions=${n_partitions:-16}
|
||||
dir=$1
|
||||
shelf=$2
|
||||
MAJOR=152
|
||||
|
||||
set -e
|
||||
|
||||
minor=`echo 10 \* $shelf \* $n_partitions | bc`
|
||||
endp=`echo $n_partitions - 1 | bc`
|
||||
for slot in `seq 0 9`; do
|
||||
for part in `seq 0 $endp`; do
|
||||
name=e$shelf.$slot
|
||||
test "$part" != "0" && name=${name}p$part
|
||||
rm -f $dir/$name
|
||||
mknod -m 0660 $dir/$name b $MAJOR $minor
|
||||
|
||||
minor=`expr $minor + 1`
|
||||
done
|
||||
done
|
31
Documentation/aoe/status.sh
Normal file
31
Documentation/aoe/status.sh
Normal file
@@ -0,0 +1,31 @@
|
||||
#! /bin/sh
|
||||
# collate and present sysfs information about AoE storage
|
||||
|
||||
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
|
||||
}
|
||||
test -z "`lsmod | grep '^aoe'`" && {
|
||||
echo "$me Error: aoe module is not loaded" 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
|
26
Documentation/aoe/udev-install.sh
Normal file
26
Documentation/aoe/udev-install.sh
Normal file
@@ -0,0 +1,26 @@
|
||||
# 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`"
|
||||
test "$rules_d" && sh -xc "cp `dirname $0`/udev.txt $rules_d/60-aoe.rules"
|
23
Documentation/aoe/udev.txt
Normal file
23
Documentation/aoe/udev.txt
Normal file
@@ -0,0 +1,23 @@
|
||||
# These rules tell udev what device nodes to create for aoe support.
|
||||
# They may be installed along the following lines (adjusted to what
|
||||
# you see on your system).
|
||||
#
|
||||
# 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-2.6.xx/Documentation/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"
|
||||
|
||||
# aoe block devices
|
||||
KERNEL="etherd*", NAME="%k", GROUP="disk"
|
Reference in New Issue
Block a user