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 device nodes created automatically.  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
