"Fossies" - the Fresh Open Source Software archive 
Member "aoe6-83/aoetools-35/aoeping.8" of archive aoe6-83.tar.gz:
Table of Contents
aoeping - simple communication with AoE device
aoeping [options]
{shelf} {slot} {netif}
The aoeping(8) program performs simple
one or two-round-trip communication with an ATA over Ethernet (AoE) device.
It creates and receives AoE packets directly, using raw network sockets.
Running aoeping(8) without command line arguments will result in a short
usage summary being displayed.
The aoeping(8) program will wait forever
if it doesn’t receive an expected response. The caller should use a time
out to catch this situation.
- shelf
- This should be the shelf address
(major AoE address) of the AoE device to communicate with.
- slot
- This should
be the slot address (minor AoE address) of the AoE device to communicate
with.
- netif
- The name of the ethernet network interface to use for AoE communications,
e.g., eth1.
- -i
- Issue an ATA "identify device" command after receiving
the AoE device’s Config Query response. The "ident" response will be printed
on standard output as a hexidecimal dump.
- -I
- Issue an ATA "identify device"
command after receiving the AoE device’s Config Query response. The "ident"
response will be pretty-printed on standard output as selected human-readable
fields.
- -v
- Turn on more copious output, including a hexidecimal dump of
the Config Query response from the AoE device (see AoE spec at URL below).
- -s
- This option takes an argument. The argument is a decimal integer that
specifies the number of seconds that aoeping(8) will wait for a response
before timing out and exiting with a non-zero status.
- -S
- This option takes
an argument. The argument is the name of a SMART command to send to the
disk. The SMART commands in the list below are supported. If the command
requires data transfer, one sector (512 bytes) of data is always the amount
transfered. If the command takes a parameter (for the Low LBA register),
then the name of the SMART command is immediately followed by a colon and
then a number, the value of the parameter, e.g., "-S read_log:1".
- read_data
- offline_immediate
read_log
write_log
enable
disable
return_status
For write_log, aoeping(8) reads from standard input the one sector of
data to be written to the specified log.
If the AoE device does not support
SMART commands or if the command is aborted, an error message is printed
to standard error and aoeping(8) exits with a non-zero status. A command
may be aborted if SMART is disabled on the device.
The aoeping(8) command
just sends and receives SMART commands, without interpreting them. See
the ATA specification for more information on using SMART.
- -t
- (This is an
advanced feature.) This option has an argument. The argument is a decimal
integer that is used as the initial tag, with the highest bit set, as
the first tag in ATA commands. Tags for subsequent ATA commands will be
incremented by one.
- -h
- Show a usage summary.
In this example, the root
user uses aoeping(8) to check for the presence of aoe device e10.9 on network
interface eth0.
- bash# aoeping -v 10 9 eth0 | headtag: 80000000eth: eth0shelf: 10slot: 9config
query response:00 0d 87 aa c9 00 00 10 04 00 11 1f 88 a2 18 00 00 0a 09
01 00 00 00 00 00 03 30 08 00 10 00 04 66 6f 6f 0a 00 ff ff ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff ff ff
The next example shows root making
sure the disk on the e10.9 is still responsive by issuing an ATA device
identify command with a 20-second timeout.
- bash# aoeping -i -s 20 \ 10 9 eth0 > /dev/null \ && echo okok
The next example
uses SMART to determine whether the disk on e10.9 thinks it has exceeded
its error threshold. The ATA spec says that the LBA Mid register will be
0x4f when the disk has not exceeded its error threshold.
- bash# aoeping -S return_status \ 10 9 eth0 | grep ’LBA Mid: 0x4f’ \ > /dev/null
\ && echo okok
Note that in a script, it would be prudent to specify and
handle a timeout. Also, a good script would make sure the Status register
does not have the error bit (bit zero) or the device fault bit (bit 5)
set.
aoe-discover(8), aoe-interfaces(8), aoe-mkdevs(8), aoe-mkshelf(8),
aoe-stat(8),
AoE (ATA over Ethernet): http://support.coraid.com/documents/AoEr10.txt,
ATA specification
Ed L. Cashin (ecashin@coraid.com)
Table of Contents