diff options
author | Ed L. Cashin <ecashin@coraid.com> | 2008-02-08 07:20:07 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2008-02-08 12:22:32 -0500 |
commit | 7df620d852642d424afc9777fe57880e02c92832 (patch) | |
tree | 9bd0b23534c02f1a8adb3cc7972f4976a7148cb3 /drivers/block/aoe/aoecmd.c | |
parent | 6b9699bbd24e82d2ec3bb5a43100099a936ded04 (diff) |
aoe: add module parameter for users who need more outstanding I/O
An AoE target provides an estimate of the number of outstanding commands that
the AoE initiator can send before getting a response. The aoe_maxout
parameter provides a way to set an even lower limit. It will not allow a user
to use more outstanding commands than the target permits. If a user discovers
a problem with a large setting, this parameter provides a way for us to work
with them to debug the problem. We expect to improve the dynamic window
sizing algorithm and drop this parameter. For the time being, it is a
debugging aid.
Signed-off-by: Ed L. Cashin <ecashin@coraid.com>
Cc: Greg KH <greg@kroah.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'drivers/block/aoe/aoecmd.c')
-rw-r--r-- | drivers/block/aoe/aoecmd.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/drivers/block/aoe/aoecmd.c b/drivers/block/aoe/aoecmd.c index 7a9618313ea3..e92d885803a3 100644 --- a/drivers/block/aoe/aoecmd.c +++ b/drivers/block/aoe/aoecmd.c | |||
@@ -18,6 +18,11 @@ static int aoe_deadsecs = 60 * 3; | |||
18 | module_param(aoe_deadsecs, int, 0644); | 18 | module_param(aoe_deadsecs, int, 0644); |
19 | MODULE_PARM_DESC(aoe_deadsecs, "After aoe_deadsecs seconds, give up and fail dev."); | 19 | MODULE_PARM_DESC(aoe_deadsecs, "After aoe_deadsecs seconds, give up and fail dev."); |
20 | 20 | ||
21 | static int aoe_maxout = 16; | ||
22 | module_param(aoe_maxout, int, 0644); | ||
23 | MODULE_PARM_DESC(aoe_maxout, | ||
24 | "Only aoe_maxout outstanding packets for every MAC on eX.Y."); | ||
25 | |||
21 | static struct sk_buff * | 26 | static struct sk_buff * |
22 | new_skb(ulong len) | 27 | new_skb(ulong len) |
23 | { | 28 | { |
@@ -984,7 +989,6 @@ aoecmd_cfg_rsp(struct sk_buff *skb) | |||
984 | struct aoeif *ifp; | 989 | struct aoeif *ifp; |
985 | ulong flags, sysminor, aoemajor; | 990 | ulong flags, sysminor, aoemajor; |
986 | struct sk_buff *sl; | 991 | struct sk_buff *sl; |
987 | enum { MAXFRAMES = 16 }; | ||
988 | u16 n; | 992 | u16 n; |
989 | 993 | ||
990 | h = (struct aoe_hdr *) skb_mac_header(skb); | 994 | h = (struct aoe_hdr *) skb_mac_header(skb); |
@@ -1009,8 +1013,8 @@ aoecmd_cfg_rsp(struct sk_buff *skb) | |||
1009 | } | 1013 | } |
1010 | 1014 | ||
1011 | n = be16_to_cpu(ch->bufcnt); | 1015 | n = be16_to_cpu(ch->bufcnt); |
1012 | if (n > MAXFRAMES) /* keep it reasonable */ | 1016 | if (n > aoe_maxout) /* keep it reasonable */ |
1013 | n = MAXFRAMES; | 1017 | n = aoe_maxout; |
1014 | 1018 | ||
1015 | d = aoedev_by_sysminor_m(sysminor); | 1019 | d = aoedev_by_sysminor_m(sysminor); |
1016 | if (d == NULL) { | 1020 | if (d == NULL) { |