diff options
-rw-r--r-- | Documentation/aoe/aoe.txt | 23 | ||||
-rw-r--r-- | drivers/block/aoe/aoenet.c | 17 |
2 files changed, 39 insertions, 1 deletions
diff --git a/Documentation/aoe/aoe.txt b/Documentation/aoe/aoe.txt index 43e50108d0e2..1212987a30fa 100644 --- a/Documentation/aoe/aoe.txt +++ b/Documentation/aoe/aoe.txt | |||
@@ -33,6 +33,9 @@ USING DEVICE NODES | |||
33 | "cat /dev/etherd/err" blocks, waiting for error diagnostic output, | 33 | "cat /dev/etherd/err" blocks, waiting for error diagnostic output, |
34 | like any retransmitted packets. | 34 | like any retransmitted packets. |
35 | 35 | ||
36 | The /dev/etherd/interfaces special file is obsoleted by the | ||
37 | aoe_iflist boot option and module option (and its sysfs entry | ||
38 | described in the next section). | ||
36 | "echo eth2 eth4 > /dev/etherd/interfaces" tells the aoe driver to | 39 | "echo eth2 eth4 > /dev/etherd/interfaces" tells the aoe driver to |
37 | limit ATA over Ethernet traffic to eth2 and eth4. AoE traffic from | 40 | limit ATA over Ethernet traffic to eth2 and eth4. AoE traffic from |
38 | untrusted networks should be ignored as a matter of security. | 41 | untrusted networks should be ignored as a matter of security. |
@@ -89,3 +92,23 @@ USING SYSFS | |||
89 | e4.7 eth1 up | 92 | e4.7 eth1 up |
90 | e4.8 eth1 up | 93 | e4.8 eth1 up |
91 | e4.9 eth1 up | 94 | e4.9 eth1 up |
95 | |||
96 | Use /sys/module/aoe/parameters/aoe_iflist (or better, the driver | ||
97 | option discussed below) instead of /dev/etherd/interfaces to limit | ||
98 | AoE traffic to the network interfaces in the given | ||
99 | whitespace-separated list. Unlike the old character device, the | ||
100 | sysfs entry can be read from as well as written to. | ||
101 | |||
102 | It's helpful to trigger discovery after setting the list of allowed | ||
103 | interfaces. If your distro provides an aoe-discover script, you can | ||
104 | use that. Otherwise, you can directly use the /dev/etherd/discover | ||
105 | file described above. | ||
106 | |||
107 | DRIVER OPTIONS | ||
108 | |||
109 | There is a boot option for the built-in aoe driver and a | ||
110 | corresponding module parameter, aoe_iflist. Without this option, | ||
111 | all network interfaces may be used for ATA over Ethernet. Here is a | ||
112 | usage example for the module parameter. | ||
113 | |||
114 | modprobe aoe_iflist="eth1 eth3" | ||
diff --git a/drivers/block/aoe/aoenet.c b/drivers/block/aoe/aoenet.c index bc92aacb6dad..9e6f51c528b0 100644 --- a/drivers/block/aoe/aoenet.c +++ b/drivers/block/aoe/aoenet.c | |||
@@ -7,6 +7,7 @@ | |||
7 | #include <linux/hdreg.h> | 7 | #include <linux/hdreg.h> |
8 | #include <linux/blkdev.h> | 8 | #include <linux/blkdev.h> |
9 | #include <linux/netdevice.h> | 9 | #include <linux/netdevice.h> |
10 | #include <linux/moduleparam.h> | ||
10 | #include "aoe.h" | 11 | #include "aoe.h" |
11 | 12 | ||
12 | #define NECODES 5 | 13 | #define NECODES 5 |
@@ -26,6 +27,19 @@ enum { | |||
26 | }; | 27 | }; |
27 | 28 | ||
28 | static char aoe_iflist[IFLISTSZ]; | 29 | static char aoe_iflist[IFLISTSZ]; |
30 | module_param_string(aoe_iflist, aoe_iflist, IFLISTSZ, 0600); | ||
31 | MODULE_PARM_DESC(aoe_iflist, "aoe_iflist=\"dev1 [dev2 ...]\"\n"); | ||
32 | |||
33 | #ifndef MODULE | ||
34 | static int __init aoe_iflist_setup(char *str) | ||
35 | { | ||
36 | strncpy(aoe_iflist, str, IFLISTSZ); | ||
37 | aoe_iflist[IFLISTSZ - 1] = '\0'; | ||
38 | return 1; | ||
39 | } | ||
40 | |||
41 | __setup("aoe_iflist=", aoe_iflist_setup); | ||
42 | #endif | ||
29 | 43 | ||
30 | int | 44 | int |
31 | is_aoe_netif(struct net_device *ifp) | 45 | is_aoe_netif(struct net_device *ifp) |
@@ -36,7 +50,8 @@ is_aoe_netif(struct net_device *ifp) | |||
36 | if (aoe_iflist[0] == '\0') | 50 | if (aoe_iflist[0] == '\0') |
37 | return 1; | 51 | return 1; |
38 | 52 | ||
39 | for (p = aoe_iflist; *p; p = q + strspn(q, WHITESPACE)) { | 53 | p = aoe_iflist + strspn(aoe_iflist, WHITESPACE); |
54 | for (; *p; p = q + strspn(q, WHITESPACE)) { | ||
40 | q = p + strcspn(p, WHITESPACE); | 55 | q = p + strcspn(p, WHITESPACE); |
41 | if (q != p) | 56 | if (q != p) |
42 | len = q - p; | 57 | len = q - p; |