aoe [1/6]: improve allowed interfaces configuration
Subsystems (3)
PATCH 1/1 aoe [1/6]: improve allowed interfaces configuration
improve allowed interfaces configuration
Documentation/aoe/aoe.txt +24 -0
@@ -33,6 +33,9 @@ USING DEVICE NODES "cat /dev/etherd/err" blocks, waiting for error diagnostic output, like any retransmitted packets. + The /dev/etherd/interfaces special file is obsoleted by the + aoe_iflist boot option and module option (and its sysfs entry + described in the next section). "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.
@@ -89,3 +92,24 @@ USING SYSFS e4.7 eth1 up e4.8 eth1 up e4.9 eth1 up + + When the aoe driver is a module, use + /sys/module/aoe/parameters/aoe_iflist instead of + /dev/etherd/interfaces to limit AoE traffic to the network + interfaces in the given whitespace-separated list. Unlike the old + character device, the sysfs entry can be read from as well as + written to. + + It's helpful to trigger discovery after setting the list of allowed + interfaces. If your distro provides an aoe-discover script, you can + use that. Otherwise, you can directly use the /dev/etherd/discover + file described above. + +DRIVER OPTIONS + + There is a boot option for the built-in aoe driver and a + corresponding module parameter, aoe_iflist. Without this option, + all network interfaces may be used for ATA over Ethernet. Here is a + usage example for the module parameter. + + modprobe aoe_iflist="eth1 eth3"
drivers/block/aoe/aoenet.c +16 -1
@@ -7,6 +7,7 @@#include <linux/hdreg.h> #include <linux/blkdev.h> #include <linux/netdevice.h> +#include <linux/moduleparam.h> #include "aoe.h" #define NECODES 5
@@ -26,6 +27,19 @@ enum { };static char aoe_iflist[IFLISTSZ ]; +module_param_string (aoe_iflist, aoe_iflist,IFLISTSZ ,0600 ); +MODULE_PARM_DESC (aoe_iflist," aoe_iflist=\"dev1 [dev2 ...]\n" ); + +#ifndef MODULE +static int __init aoe_iflist_setup (char *str) +{ +strncpy (aoe_iflist, str,IFLISTSZ ); + aoe_iflist[IFLISTSZ -1 ] ='\0' ; +return 1 ; +} + +__setup ("aoe_iflist=" , aoe_iflist_setup); +#endif int is_aoe_netif (struct net_device *ifp)
@@ -36,7 +50,8 @@ is_aoe_netif(struct net_device *ifp)if (aoe_iflist[0 ] =='\0' )return 1 ; -for (p = aoe_iflist; *p; p = q +strspn (q,WHITESPACE )) { + p = aoe_iflist +strspn (aoe_iflist,WHITESPACE ); +for (; *p; p = q +strspn (q,WHITESPACE )) { q = p +strcspn (p,WHITESPACE );if (q != p) len = q - p;
Signature · 1 line
Ed L. Cashin <[email protected]>
PATCH 1/1 aoe [2/6]: aoe-stat should work for built-in as well as module
aoe-stat should work for built-in as well as module
Documentation/aoe/status.sh +0 -4
@@ -14,10 +14,6 @@ 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"
Signature · 1 line
Ed L. Cashin <[email protected]>
PATCH 1/1 aoe [3/6]: update the documentation to mention aoetools
In reply to Ed L Cashinupdate the documentation to mention aoetools
Documentation/aoe/aoe.txt +19 -10
@@ -4,6 +4,16 @@ The EtherDrive (R) HOWTO for users of 2. It has many tips and hints! +The aoetools are userland programs that are designed to work with this +driver. The aoetools are on sourceforge. + + http://aoetools.sourceforge.net/ + +The scripts in this Documentation/aoe directory are intended to +document the use of the driver and are not necessary if you install +the aoetools. + + CREATING DEVICE NODES Users of udev should find the block device nodes created
@@ -33,19 +43,17 @@ USING DEVICE NODES "cat /dev/etherd/err" blocks, waiting for error diagnostic output, like any retransmitted packets. - The /dev/etherd/interfaces special file is obsoleted by the - aoe_iflist boot option and module option (and its sysfs entry - described in the next section). "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. + untrusted networks should be ignored as a matter of security. See + also the aoe_iflist driver option described below. "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. + counterparts. Using the commands in aoetools insulates users from + these implementation details. The block devices are named like this:
@@ -69,7 +77,8 @@ USING SYSFS 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. + in a convenient way. Users with aoetools can use the aoe-stat + command. root@makki root# sh Documentation/aoe/status.sh e10.0 eth3 up
@@ -101,9 +110,9 @@ USING SYSFS written to. It's helpful to trigger discovery after setting the list of allowed - interfaces. If your distro provides an aoe-discover script, you can - use that. Otherwise, you can directly use the /dev/etherd/discover - file described above. + interfaces. The aoetools package provides an aoe-discover script + for this purpose. You can also directly use the + /dev/etherd/discover special file described above. DRIVER OPTIONS
Signature · 1 line
Ed L. Cashin <[email protected]>
PATCH 1/1 aoe [5/6]: add firmware version to info in sysfs
In reply to Ed L Cashinadd firmware version to info in sysfs
drivers/block/aoe/aoeblk.c +13 -0
@@ -37,6 +37,13 @@ static ssize_t aoedisk_show_netif(structreturn snprintf (page,PAGE_SIZE ,"%s\n" , d->ifp->name); } +/* firmware version */ +static ssize_t aoedisk_show_fwver (struct gendisk * disk,char *page) +{ +struct aoedev *d = disk->private_data; + +return snprintf (page,PAGE_SIZE ,"0x%04x\n" , (unsigned int ) d->fw_ver); +}static struct disk_attribute disk_attr_state = { .attr = {.name ="state" , .mode =S_IRUGO },
@@ -50,6 +57,10 @@ static struct disk_attribute disk_attr_n .attr = {.name = "netif", .mode = S_IRUGO }, .show = aoedisk_show_netif }; +static struct disk_attribute disk_attr_fwver = { + .attr = {.name ="fwver" , .mode =S_IRUGO }, + .show = aoedisk_show_fwver +};static void aoedisk_add_sysfs (struct aoedev *d)
@@ -57,6 +68,7 @@ aoedisk_add_sysfs(struct aoedev *d)sysfs_create_file (&d->gd->kobj, &disk_attr_state.attr);sysfs_create_file (&d->gd->kobj, &disk_attr_mac.attr);sysfs_create_file (&d->gd->kobj, &disk_attr_netif.attr); +sysfs_create_file (&d->gd->kobj, &disk_attr_fwver.attr); }void aoedisk_rm_sysfs (struct aoedev *d)
@@ -64,6 +76,7 @@ aoedisk_rm_sysfs(struct aoedev *d)sysfs_remove_link (&d->gd->kobj,"state" );sysfs_remove_link (&d->gd->kobj,"mac" );sysfs_remove_link (&d->gd->kobj,"netif" ); +sysfs_remove_link (&d->gd->kobj,"fwver" ); } static int
Signature · 1 line
Ed L. Cashin <[email protected]>
PATCH 1/1 aoe [6/6]: update version number to 10
In reply to Ed L Cashinupdate version number to 10
drivers/block/aoe/aoe.h +1 -1
@@ -1,5 +1,5 @@/* Copyright (c) 2004 Coraid, Inc. See COPYING for GPL terms. */ -#define VERSION "6" +#define VERSION "10"#define AOE_MAJOR 152#define DEVICE_NAME "aoe"
Signature · 1 line
Ed L. Cashin <[email protected]>
PATCH 1/1 aoe [4/6]: allow multiple aoe devices to have the same mac
In reply to Ed L Cashinallow multiple aoe devices to have the same mac
drivers/block/aoe/aoedev.c +4 -7
@@ -109,25 +109,22 @@spin_lock_irqsave (&devlist_lock, flags);for (d=devlist; d; d=d->next) -if (d->sysminor == sysminor - ||memcmp (d->addr, addr,sizeof d->addr) ==0 ) +if (d->sysminor == sysminor)break ;if (d ==NULL && (d =aoedev_newdev (bufcnt)) ==NULL ) {spin_unlock_irqrestore (&devlist_lock, flags);printk (KERN_INFO "aoe: aoedev_set: aoedev_newdev failure.\n" );return NULL ; - } + }/* if newdev, (d->flags & DEVFL_UP) == 0 for below */ spin_unlock_irqrestore (&devlist_lock, flags);spin_lock_irqsave (&d->lock, flags); d->ifp = ifp; - -if (d->sysminor != sysminor - || (d->flags &DEVFL_UP ) ==0 ) { +memcpy (d->addr, addr,sizeof d->addr); +if ((d->flags &DEVFL_UP ) ==0 ) {aoedev_downdev (d);/* flushes outstanding frames */ -memcpy (d->addr, addr,sizeof d->addr); d->sysminor = sysminor; d->aoemajor =AOEMAJOR (sysminor); d->aoeminor =AOEMINOR (sysminor);
Signature · 1 line
Ed L. Cashin <[email protected]>
On Wed, 20 Apr 2005 13:02:12 -0400 Ed L Cashin wrote:
Just a nit/typo:
| + modprobe aoe_iflist="eth1 eth3"
| static char aoe_iflist[IFLISTSZ]; | +module_param_string(aoe_iflist, aoe_iflist, IFLISTSZ, 0600); | +MODULE_PARM_DESC(aoe_iflist, " aoe_iflist=\"dev1 [dev2 ...]\n");
No leading space (" aoe_iflist=") and put a trailing \" in it:
+MODULE_PARM_DESC(aoe_iflist, "aoe_iflist=\"dev1 [dev2 ...]\"\n");
---
~Randy
Quoted 6 lines · Randy.Dunlap
On Wed, 20 Apr 2005 13:02:12 -0400 Ed L Cashin wrote:
Just a nit/typo:
| + modprobe aoe_iflist="eth1 eth3"
Quoted 7 lines
| static char aoe_iflist[IFLISTSZ]; | +module_param_string(aoe_iflist, aoe_iflist, IFLISTSZ, 0600); | +MODULE_PARM_DESC(aoe_iflist, " aoe_iflist=\"dev1 [dev2 ...]\n");No leading space (" aoe_iflist=") and put a trailing \" in it:
+MODULE_PARM_DESC(aoe_iflist, "aoe_iflist=\"dev1 [dev2 ...]\"\n");
Thanks for catching that.
improve allowed interfaces configuration
Documentation/aoe/aoe.txt +24 -0
@@ -33,6 +33,9 @@ USING DEVICE NODES "cat /dev/etherd/err" blocks, waiting for error diagnostic output, like any retransmitted packets. + The /dev/etherd/interfaces special file is obsoleted by the + aoe_iflist boot option and module option (and its sysfs entry + described in the next section). "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.
@@ -89,3 +92,24 @@ USING SYSFS e4.7 eth1 up e4.8 eth1 up e4.9 eth1 up + + When the aoe driver is a module, use + /sys/module/aoe/parameters/aoe_iflist instead of + /dev/etherd/interfaces to limit AoE traffic to the network + interfaces in the given whitespace-separated list. Unlike the old + character device, the sysfs entry can be read from as well as + written to. + + It's helpful to trigger discovery after setting the list of allowed + interfaces. If your distro provides an aoe-discover script, you can + use that. Otherwise, you can directly use the /dev/etherd/discover + file described above. + +DRIVER OPTIONS + + There is a boot option for the built-in aoe driver and a + corresponding module parameter, aoe_iflist. Without this option, + all network interfaces may be used for ATA over Ethernet. Here is a + usage example for the module parameter. + + modprobe aoe_iflist="eth1 eth3"
drivers/block/aoe/aoenet.c +16 -1
@@ -7,6 +7,7 @@#include <linux/hdreg.h> #include <linux/blkdev.h> #include <linux/netdevice.h> +#include <linux/moduleparam.h> #include "aoe.h" #define NECODES 5
@@ -26,6 +27,19 @@ enum { };static char aoe_iflist[IFLISTSZ ]; +module_param_string (aoe_iflist, aoe_iflist,IFLISTSZ ,0600 ); +MODULE_PARM_DESC (aoe_iflist,"aoe_iflist=\"dev1 [dev2 ...]\"\n" ); + +#ifndef MODULE +static int __init aoe_iflist_setup (char *str) +{ +strncpy (aoe_iflist, str,IFLISTSZ ); + aoe_iflist[IFLISTSZ -1 ] ='\0' ; +return 1 ; +} + +__setup ("aoe_iflist=" , aoe_iflist_setup); +#endif int is_aoe_netif (struct net_device *ifp)
@@ -36,7 +50,8 @@ is_aoe_netif(struct net_device *ifp)if (aoe_iflist[0 ] =='\0' )return 1 ; -for (p = aoe_iflist; *p; p = q +strspn (q,WHITESPACE )) { + p = aoe_iflist +strspn (aoe_iflist,WHITESPACE ); +for (; *p; p = q +strspn (q,WHITESPACE )) { q = p +strcspn (p,WHITESPACE );if (q != p) len = q - p;
Signature · 2 lines
-- Ed L Cashin <[email protected]>
Re: [PATCH 2.6.12-rc2] aoe [5/6]: add firmware version to info in sysfs
In reply to Ed L Cashin
| add firmware version to info in sysfs
|
| +static struct disk_attribute disk_attr_fwver = {
| + .attr = {.name = "fwver", .mode = S_IRUGO },
| + .show = aoedisk_show_fwver
| +};
| @@ -64,6 +76,7 @@ aoedisk_rm_sysfs(struct aoedev *d)
| sysfs_remove_link(&d->gd->kobj, "state");
| sysfs_remove_link(&d->gd->kobj, "mac");
| sysfs_remove_link(&d->gd->kobj, "netif");
| + sysfs_remove_link(&d->gd->kobj, "fwver");It's a good thing that you spelled out "firmware version" for me.
Just seeing 'fwver' provided these comments from others:
n vwls s bd (well, it does have 'e'; maybe it shouldn't :) friends fwver
fw is firewire
so something like 'firmware-version' would be appreciated (for the sysfs filename).
Thanks,
---
~Randy
Re: [PATCH 2.6.12-rc2] aoe [5/6]: add firmware version to info in sysfs
"Randy.Dunlap" <[email protected]> writes:
...
Quoted 2 lines
so something like 'firmware-version' would be appreciated (for the sysfs filename).
Fair enough. This patch follows and depends on the fifth patch of the six.
use a more explicit filename for sysfs firmware version info
linux/drivers/block/aoe/aoeblk.c +2 -2
@@ -58,7 +58,7 @@ static struct disk_attribute disk_attr_n .show = aoedisk_show_netif };static struct disk_attribute disk_attr_fwver = { - .attr = {.name ="fwver" , .mode =S_IRUGO }, + .attr = {.name ="firmware-version" , .mode =S_IRUGO }, .show = aoedisk_show_fwver };
@@ -76,7 +76,7 @@ aoedisk_rm_sysfs(struct aoedev *d)sysfs_remove_link (&d->gd->kobj,"state" );sysfs_remove_link (&d->gd->kobj,"mac" );sysfs_remove_link (&d->gd->kobj,"netif" ); -sysfs_remove_link (&d->gd->kobj,"fwver" ); +sysfs_remove_link (&d->gd->kobj,"firmware-version" ); } static int
Signature · 2 lines
-- Ed L Cashin <[email protected]>