aboutsummaryrefslogtreecommitdiffstats
path: root/driver
diff options
context:
space:
mode:
authorGreg Kroah-Hartman <gregkh@suse.de>2006-01-19 17:49:55 -0800
committerGreg Kroah-Hartman <gregkh@suse.de>2006-01-19 17:49:55 -0800
commita934cef80385908677760f918521d9f4f0f38089 (patch)
tree87d9d494a69ad58a587aca706eedad544f295484 /driver
parent358c5e469c3bb46cab6536de47f6795bc07a1712 (diff)
downloadpatches-a934cef80385908677760f918521d9f4f0f38089.tar.gz
aoe patch update
Diffstat (limited to 'driver')
-rw-r--r--driver/aoe-allow-network-interface-migration-on-packet-retransmit.patch12
-rw-r--r--driver/aoe-increase-allowed-outstanding-packets.patch12
-rw-r--r--driver/aoe-skb_check-cleanup.patch38
-rw-r--r--driver/aoe-support-dynamic-resizing-of-aoe-devices.patch609
-rw-r--r--driver/aoe-type-cleanups.patch-added-to-mm-tree.patch299
-rw-r--r--driver/aoe-update-device-information-on-last-close.patch8
-rw-r--r--driver/aoe-update-driver-compatibility-string.patch29
-rw-r--r--driver/aoe-update-driver-version-number.patch11
-rw-r--r--driver/aoe-use-less-confusing-driver-name.patch14
-rw-r--r--driver/aoe-zero-packet-data-after-skb-allocation.patch11
10 files changed, 426 insertions, 617 deletions
diff --git a/driver/aoe-allow-network-interface-migration-on-packet-retransmit.patch b/driver/aoe-allow-network-interface-migration-on-packet-retransmit.patch
index d805fd0501ab75..d1daf36870e677 100644
--- a/driver/aoe-allow-network-interface-migration-on-packet-retransmit.patch
+++ b/driver/aoe-allow-network-interface-migration-on-packet-retransmit.patch
@@ -1,15 +1,13 @@
-From ecashin@coraid.com Tue Jan 3 13:31:30 2006
+From ecashin@coraid.com Thu Jan 19 11:11:56 2006
+Message-ID: <d856359f3883ba1b7f11683932a478be@coraid.com>
From: "Ed L. Cashin" <ecashin@coraid.com>
+Date: Thu, 19 Jan 2006 13:46:25 -0500
CC: ecashin@coraid.com, Greg K-H <greg@kroah.com>
-Subject: aoe: allow network interface migration on packet retransmit
-Date: Tue, 03 Jan 2006 16:08:17 -0500
-Message-ID: <87sls5yq7y.fsf@coraid.com>
-
+Subject: [PATCH 2.6.15-git9] aoe [5/8]: allow network interface migration on packet retransmit
Retransmit to the current network interface for an AoE device.
Signed-off-by: "Ed L. Cashin" <ecashin@coraid.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
drivers/block/aoe/aoecmd.c | 2 ++
@@ -17,7 +15,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
--- gregkh-2.6.orig/drivers/block/aoe/aoecmd.c
+++ gregkh-2.6/drivers/block/aoe/aoecmd.c
-@@ -239,6 +239,8 @@ rexmit(struct aoedev *d, struct frame *f
+@@ -286,6 +286,8 @@ rexmit(struct aoedev *d, struct frame *f
h = (struct aoe_hdr *) f->data;
f->tag = n;
h->tag = cpu_to_be32(n);
diff --git a/driver/aoe-increase-allowed-outstanding-packets.patch b/driver/aoe-increase-allowed-outstanding-packets.patch
index 93a985ea0195f4..153be15771f6f9 100644
--- a/driver/aoe-increase-allowed-outstanding-packets.patch
+++ b/driver/aoe-increase-allowed-outstanding-packets.patch
@@ -1,9 +1,9 @@
-From ecashin@coraid.com Tue Jan 3 13:31:24 2006
+From ecashin@coraid.com Thu Jan 19 11:06:22 2006
+Message-ID: <5debc908a0299c62aca98d7a08a00cba@coraid.com>
From: "Ed L. Cashin" <ecashin@coraid.com>
+Date: Thu, 19 Jan 2006 13:46:20 -0500
CC: ecashin@coraid.com, Greg K-H <greg@kroah.com>
-Subject: aoe: increase allowed outstanding packets
-Date: Tue, 03 Jan 2006 16:07:55 -0500
-Message-ID: <87aced10lw.fsf@coraid.com>
+Subject: [PATCH 2.6.15-git9] aoe [3/8]: increase allowed outstanding packets
Increase the number of AoE packets per device that can be outstanding
at one time, increasing performance.
@@ -17,8 +17,8 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
--- gregkh-2.6.orig/drivers/block/aoe/aoecmd.c
+++ gregkh-2.6/drivers/block/aoe/aoecmd.c
-@@ -655,7 +655,7 @@ aoecmd_cfg_rsp(struct sk_buff *skb)
- unsigned long flags, sysminor, aoemajor;
+@@ -647,7 +647,7 @@ aoecmd_cfg_rsp(struct sk_buff *skb)
+ ulong flags, sysminor, aoemajor;
u16 bufcnt;
struct sk_buff *sl;
- enum { MAXFRAMES = 8 };
diff --git a/driver/aoe-skb_check-cleanup.patch b/driver/aoe-skb_check-cleanup.patch
deleted file mode 100644
index 2ae9e86c0b4575..00000000000000
--- a/driver/aoe-skb_check-cleanup.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-From akpm@osdl.org Wed Nov 30 15:21:12 2005
-Message-Id: <200511302319.jAUNJnoO015372@shell0.pdx.osdl.net>
-From: Pekka Enberg <penberg@cs.helsinki.fi>
-Subject: aoe: skb_check cleanup
-To: penberg@cs.helsinki.fi, axboe@suse.de, greg@kroah.com, jgarzik@pobox.com
-Date: Wed, 30 Nov 2005 15:21:08 -0800
-
-This patch cleans up skb_check() to make it readable.
-
-Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
-Cc: Jeff Garzik <jgarzik@pobox.com>
-Cc: Jens Axboe <axboe@suse.de>
-Signed-off-by: Andrew Morton <akpm@osdl.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
----
- drivers/block/aoe/aoenet.c | 11 ++++++-----
- 1 file changed, 6 insertions(+), 5 deletions(-)
-
---- gregkh-2.6.orig/drivers/block/aoe/aoenet.c
-+++ gregkh-2.6/drivers/block/aoe/aoenet.c
-@@ -95,11 +95,12 @@ mac_addr(char addr[6])
- static struct sk_buff *
- skb_check(struct sk_buff *skb)
- {
-- if (skb_is_nonlinear(skb))
-- if ((skb = skb_share_check(skb, GFP_ATOMIC)))
-- if (skb_linearize(skb, GFP_ATOMIC) < 0) {
-- dev_kfree_skb(skb);
-- return NULL;
-+ if (skb_is_nonlinear(skb)) {
-+ skb = skb_share_check(skb, GFP_ATOMIC);
-+ if (skb && skb_linearize(skb, GFP_ATOMIC) < 0) {
-+ dev_kfree_skb(skb);
-+ return NULL;
-+ }
- }
- return skb;
- }
diff --git a/driver/aoe-support-dynamic-resizing-of-aoe-devices.patch b/driver/aoe-support-dynamic-resizing-of-aoe-devices.patch
index eb76a432877178..e9953e1b1a0841 100644
--- a/driver/aoe-support-dynamic-resizing-of-aoe-devices.patch
+++ b/driver/aoe-support-dynamic-resizing-of-aoe-devices.patch
@@ -1,13 +1,14 @@
-From ecashin@coraid.com Tue Jan 3 13:19:50 2006
+From ecashin@coraid.com Thu Jan 19 11:06:22 2006
+Message-ID: <8b8d2529e6e616530c1463e0284108db@coraid.com>
From: "Ed L. Cashin" <ecashin@coraid.com>
+Date: Thu, 19 Jan 2006 13:46:19 -0500
CC: ecashin@coraid.com, Greg K-H <greg@kroah.com>
-Subject: aoe: support dynamic resizing of AoE devices
-Date: Tue, 03 Jan 2006 16:07:41 -0500
-Message-ID: <87irt110ma.fsf@coraid.com>
+Subject: [PATCH 2.6.15-git9] aoe [2/8]: support dynamic resizing of AoE devices
-Allow the driver to recognize AoE devices that have changed
-size. Devices not in use are updated automatically, and devices
-that are in use are updated at user request.
+
+Allow the driver to recognize AoE devices that have changed size.
+Devices not in use are updated automatically, and devices that are in
+use are updated at user request.
Signed-off-by: "Ed L. Cashin" <ecashin@coraid.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
@@ -15,13 +16,24 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
Documentation/aoe/mkdevs.sh | 2
Documentation/aoe/udev.txt | 1
- drivers/block/aoe/aoe.h | 13 +++--
- drivers/block/aoe/aoeblk.c | 22 +++-----
- drivers/block/aoe/aoechr.c | 37 ++++++++++++++
- drivers/block/aoe/aoecmd.c | 113 +++++++++++++++++++++++++++++++++++---------
- drivers/block/aoe/aoedev.c | 50 ++++++++++++-------
- 7 files changed, 179 insertions(+), 59 deletions(-)
+ drivers/block/aoe/aoe.h | 12 +-
+ drivers/block/aoe/aoeblk.c | 22 ++---
+ drivers/block/aoe/aoechr.c | 37 +++++++++
+ drivers/block/aoe/aoecmd.c | 177 +++++++++++++++++++++++++++++---------------
+ drivers/block/aoe/aoedev.c | 69 +++++++++++------
+ 7 files changed, 223 insertions(+), 97 deletions(-)
+--- gregkh-2.6.orig/Documentation/aoe/mkdevs.sh
++++ gregkh-2.6/Documentation/aoe/mkdevs.sh
+@@ -27,6 +27,8 @@ rm -f $dir/discover
+ mknod -m 0200 $dir/discover c $MAJOR 3
+ rm -f $dir/interfaces
+ mknod -m 0200 $dir/interfaces c $MAJOR 4
++rm -f $dir/revalidate
++mknod -m 0200 $dir/revalidate c $MAJOR 5
+
+ export n_partitions
+ mkshelf=`echo $0 | sed 's!mkdevs!mkshelf!'`
--- gregkh-2.6.orig/Documentation/aoe/udev.txt
+++ gregkh-2.6/Documentation/aoe/udev.txt
@@ -18,6 +18,7 @@
@@ -32,6 +44,41 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
# aoe block devices
KERNEL="etherd*", NAME="%k", GROUP="disk"
+--- gregkh-2.6.orig/drivers/block/aoe/aoe.h
++++ gregkh-2.6/drivers/block/aoe/aoe.h
+@@ -75,8 +75,9 @@ enum {
+ DEVFL_TKILL = (1<<1), /* flag for timer to know when to kill self */
+ DEVFL_EXT = (1<<2), /* device accepts lba48 commands */
+ DEVFL_CLOSEWAIT = (1<<3), /* device is waiting for all closes to revalidate */
+- DEVFL_WC_UPDATE = (1<<4), /* this device needs to update write cache status */
+- DEVFL_WORKON = (1<<4),
++ DEVFL_GDALLOC = (1<<4), /* need to alloc gendisk */
++ DEVFL_PAUSE = (1<<5),
++ DEVFL_NEWSIZE = (1<<6), /* need to update dev size in block layer */
+
+ BUFFL_FAIL = 1,
+ };
+@@ -152,16 +153,17 @@ void aoechr_exit(void);
+ void aoechr_error(char *);
+
+ void aoecmd_work(struct aoedev *d);
+-void aoecmd_cfg(ushort, unsigned char);
++void aoecmd_cfg(ushort aoemajor, unsigned char aoeminor);
+ void aoecmd_ata_rsp(struct sk_buff *);
+ void aoecmd_cfg_rsp(struct sk_buff *);
++void aoecmd_sleepwork(void *vp);
+
+ int aoedev_init(void);
+ void aoedev_exit(void);
+ struct aoedev *aoedev_by_aoeaddr(int maj, int min);
++struct aoedev *aoedev_by_sysminor_m(ulong sysminor, ulong bufcnt);
+ void aoedev_downdev(struct aoedev *d);
+-struct aoedev *aoedev_set(ulong, unsigned char *, struct net_device *, ulong);
+-int aoedev_busy(void);
++int aoedev_isbusy(struct aoedev *d);
+
+ int aoenet_init(void);
+ void aoenet_exit(void);
--- gregkh-2.6.orig/drivers/block/aoe/aoeblk.c
+++ gregkh-2.6/drivers/block/aoe/aoeblk.c
@@ -22,7 +22,9 @@ static ssize_t aoedisk_show_state(struct
@@ -110,108 +157,73 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
}
void
---- gregkh-2.6.orig/drivers/block/aoe/aoedev.c
-+++ gregkh-2.6/drivers/block/aoe/aoedev.c
-@@ -12,6 +12,24 @@
- static struct aoedev *devlist;
- static spinlock_t devlist_lock;
+--- gregkh-2.6.orig/drivers/block/aoe/aoechr.c
++++ gregkh-2.6/drivers/block/aoe/aoechr.c
+@@ -13,6 +13,7 @@ enum {
+ MINOR_ERR = 2,
+ MINOR_DISCOVER,
+ MINOR_INTERFACES,
++ MINOR_REVALIDATE,
+ MSGSZ = 2048,
+ NARGS = 10,
+ NMSG = 100, /* message backlog to retain */
+@@ -41,6 +42,7 @@ static struct aoe_chardev chardevs[] = {
+ { MINOR_ERR, "err" },
+ { MINOR_DISCOVER, "discover" },
+ { MINOR_INTERFACES, "interfaces" },
++ { MINOR_REVALIDATE, "revalidate" },
+ };
-+int
-+aoedev_isbusy(struct aoedev *d)
+ static int
+@@ -62,6 +64,39 @@ interfaces(const char __user *str, size_
+ return 0;
+ }
+
++static int
++revalidate(const char __user *str, size_t size)
+{
-+ struct frame *f, *e;
++ int major, minor, n;
++ ulong flags;
++ struct aoedev *d;
++ char buf[16];
+
-+ f = d->frames;
-+ e = f + d->nframes;
-+ do {
-+ if (f->tag != FREETAG) {
-+ printk(KERN_DEBUG "aoe: %ld.%ld isbusy\n",
-+ d->aoemajor, d->aoeminor);
-+ return 1;
-+ }
-+ } while (++f < e);
++ if (size >= sizeof buf)
++ return -EINVAL;
++ buf[sizeof buf - 1] = '\0';
++ if (copy_from_user(buf, str, size))
++ return -EFAULT;
++
++ /* should be e%d.%d format */
++ n = sscanf(buf, "e%d.%d", &major, &minor);
++ if (n != 2) {
++ printk(KERN_ERR "aoe: %s: invalid device specification\n",
++ __FUNCTION__);
++ return -EINVAL;
++ }
++ d = aoedev_by_aoeaddr(major, minor);
++ if (!d)
++ return -EINVAL;
++
++ spin_lock_irqsave(&d->lock, flags);
++ d->flags |= DEVFL_PAUSE;
++ spin_unlock_irqrestore(&d->lock, flags);
++ aoecmd_cfg(major, minor);
+
+ return 0;
+}
+
- struct aoedev *
- aoedev_by_aoeaddr(int maj, int min)
- {
-@@ -44,6 +62,8 @@ aoedev_newdev(unsigned long nframes)
- return NULL;
- }
-
-+ INIT_WORK(&d->work, aoecmd_sleepwork, d);
-+
- d->nframes = nframes;
- d->frames = f;
- e = f + nframes;
-@@ -92,17 +112,15 @@ aoedev_downdev(struct aoedev *d)
- bio_endio(bio, bio->bi_size, -EIO);
- }
-
-- if (d->nopen)
-- d->flags |= DEVFL_CLOSEWAIT;
- if (d->gd)
- d->gd->capacity = 0;
-
-- d->flags &= ~DEVFL_UP;
-+ d->flags &= ~(DEVFL_UP | DEVFL_PAUSE);
- }
-
-+/* find it or malloc it */
- struct aoedev *
--aoedev_set(unsigned long sysminor, unsigned char *addr,
-- struct net_device *ifp, unsigned long bufcnt)
-+aoedev_by_sysminor_m(ulong sysminor, ulong bufcnt)
+ void
+ aoechr_error(char *msg)
{
- struct aoedev *d;
- unsigned long flags;
-@@ -113,25 +131,19 @@ aoedev_set(unsigned long sysminor, unsig
- 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;
-- memcpy(d->addr, addr, sizeof d->addr);
-- if ((d->flags & DEVFL_UP) == 0) {
-- aoedev_downdev(d); /* flushes outstanding frames */
-+ if (d == NULL) {
-+ d = aoedev_newdev(bufcnt);
-+ if (d == NULL) {
-+ spin_unlock_irqrestore(&devlist_lock, flags);
-+ printk(KERN_INFO "aoe: aoedev_set: aoedev_newdev failure.\n");
-+ return NULL;
-+ }
- d->sysminor = sysminor;
- d->aoemajor = AOEMAJOR(sysminor);
- d->aoeminor = AOEMINOR(sysminor);
+@@ -114,6 +149,8 @@ aoechr_write(struct file *filp, const ch
+ case MINOR_INTERFACES:
+ ret = interfaces(buf, cnt);
+ break;
++ case MINOR_REVALIDATE:
++ ret = revalidate(buf, cnt);
}
-
-- spin_unlock_irqrestore(&d->lock, flags);
-+ spin_unlock_irqrestore(&devlist_lock, flags);
- return d;
- }
-
---- gregkh-2.6.orig/Documentation/aoe/mkdevs.sh
-+++ gregkh-2.6/Documentation/aoe/mkdevs.sh
-@@ -27,6 +27,8 @@ rm -f $dir/discover
- mknod -m 0200 $dir/discover c $MAJOR 3
- rm -f $dir/interfaces
- mknod -m 0200 $dir/interfaces c $MAJOR 4
-+rm -f $dir/revalidate
-+mknod -m 0200 $dir/revalidate c $MAJOR 5
-
- export n_partitions
- mkshelf=`echo $0 | sed 's!mkdevs!mkshelf!'`
+ if (ret == 0)
+ ret = cnt;
--- gregkh-2.6.orig/drivers/block/aoe/aoecmd.c
+++ gregkh-2.6/drivers/block/aoe/aoecmd.c
@@ -8,6 +8,7 @@
@@ -222,7 +234,60 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
#include <asm/unaligned.h>
#include "aoe.h"
-@@ -195,6 +196,14 @@ aoecmd_work(struct aoedev *d)
+@@ -189,12 +190,67 @@ aoecmd_ata_rw(struct aoedev *d, struct f
+ }
+ }
+
++/* some callers cannot sleep, and they can call this function,
++ * transmitting the packets later, when interrupts are on
++ */
++static struct sk_buff *
++aoecmd_cfg_pkts(ushort aoemajor, unsigned char aoeminor, struct sk_buff **tail)
++{
++ struct aoe_hdr *h;
++ struct aoe_cfghdr *ch;
++ struct sk_buff *skb, *sl, *sl_tail;
++ struct net_device *ifp;
++
++ sl = sl_tail = NULL;
++
++ read_lock(&dev_base_lock);
++ for (ifp = dev_base; ifp; dev_put(ifp), ifp = ifp->next) {
++ dev_hold(ifp);
++ if (!is_aoe_netif(ifp))
++ continue;
++
++ skb = new_skb(ifp, sizeof *h + sizeof *ch);
++ if (skb == NULL) {
++ printk(KERN_INFO "aoe: aoecmd_cfg: skb alloc failure\n");
++ continue;
++ }
++ if (sl_tail == NULL)
++ sl_tail = skb;
++ h = (struct aoe_hdr *) skb->mac.raw;
++ memset(h, 0, sizeof *h + sizeof *ch);
++
++ memset(h->dst, 0xff, sizeof h->dst);
++ memcpy(h->src, ifp->dev_addr, sizeof h->src);
++ h->type = __constant_cpu_to_be16(ETH_P_AOE);
++ h->verfl = AOE_HVER;
++ h->major = cpu_to_be16(aoemajor);
++ h->minor = aoeminor;
++ h->cmd = AOECMD_CFG;
++
++ skb->next = sl;
++ sl = skb;
++ }
++ read_unlock(&dev_base_lock);
++
++ if (tail != NULL)
++ *tail = sl_tail;
++ return sl;
++}
++
+ /* enters with d->lock held */
+ void
+ aoecmd_work(struct aoedev *d)
{
struct frame *f;
struct buf *buf;
@@ -237,7 +302,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
loop:
f = getframe(d, FREETAG);
if (f == NULL)
-@@ -306,6 +315,38 @@ tdie: spin_unlock_irqrestore(&d->lock,
+@@ -306,6 +362,37 @@ tdie: spin_unlock_irqrestore(&d->lock,
aoenet_xmit(sl);
}
@@ -263,7 +328,6 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+ mutex_lock(&bd->bd_inode->i_mutex);
+ i_size_write(bd->bd_inode, (loff_t)ssize<<9);
+ mutex_unlock(&bd->bd_inode->i_mutex);
-+//?? rescan_partitions(d->gd, bd);
+ bdput(bd);
+ }
+ spin_lock_irqsave(&d->lock, flags);
@@ -276,7 +340,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
static void
ataid_complete(struct aoedev *d, unsigned char *id)
{
-@@ -340,21 +381,29 @@ ataid_complete(struct aoedev *d, unsigne
+@@ -340,21 +427,29 @@ ataid_complete(struct aoedev *d, unsigne
d->geo.heads = le16_to_cpu(get_unaligned((__le16 *) &id[55<<1]));
d->geo.sectors = le16_to_cpu(get_unaligned((__le16 *) &id[56<<1]));
}
@@ -315,7 +379,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
}
static void
-@@ -452,7 +501,7 @@ aoecmd_ata_rsp(struct sk_buff *skb)
+@@ -452,7 +547,7 @@ aoecmd_ata_rsp(struct sk_buff *skb)
return;
}
ataid_complete(d, (char *) (ahin+1));
@@ -324,7 +388,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
break;
default:
printk(KERN_INFO "aoe: aoecmd_ata_rsp: unrecognized "
-@@ -485,24 +534,25 @@ aoecmd_ata_rsp(struct sk_buff *skb)
+@@ -485,51 +580,19 @@ aoecmd_ata_rsp(struct sk_buff *skb)
f->tag = FREETAG;
aoecmd_work(d);
@@ -337,54 +401,72 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
aoenet_xmit(sl);
}
--void
--aoecmd_cfg(ushort aoemajor, unsigned char aoeminor)
-+/* some callers cannot sleep, and they can call this function,
-+ * transmitting the packets later, when interrupts are on
-+ */
-+struct sk_buff *
-+aoecmd_cfg_pkts(ushort aoemajor, unsigned char aoeminor, struct sk_buff **tail)
+ void
+ aoecmd_cfg(ushort aoemajor, unsigned char aoeminor)
{
- struct aoe_hdr *h;
- struct aoe_cfghdr *ch;
+- struct aoe_hdr *h;
+- struct aoe_cfghdr *ch;
- struct sk_buff *skb, *sl;
-+ struct sk_buff *skb, *sl, *sl_tail;
- struct net_device *ifp;
-
+- struct net_device *ifp;
+-
- sl = NULL;
-+ sl = sl_tail = NULL;
-
- read_lock(&dev_base_lock);
- for (ifp = dev_base; ifp; dev_put(ifp), ifp = ifp->next) {
-@@ -515,6 +565,8 @@ aoecmd_cfg(ushort aoemajor, unsigned cha
- printk(KERN_INFO "aoe: aoecmd_cfg: skb alloc failure\n");
- continue;
- }
-+ if (sl_tail == NULL)
-+ sl_tail = skb;
- h = (struct aoe_hdr *) skb->mac.raw;
- memset(h, 0, sizeof *h + sizeof *ch);
-
-@@ -531,6 +583,18 @@ aoecmd_cfg(ushort aoemajor, unsigned cha
- }
- read_unlock(&dev_base_lock);
-
-+ if (tail != NULL)
-+ *tail = sl_tail;
-+ return sl;
-+}
-+
-+void
-+aoecmd_cfg(ushort aoemajor, unsigned char aoeminor)
-+{
+-
+- read_lock(&dev_base_lock);
+- for (ifp = dev_base; ifp; dev_put(ifp), ifp = ifp->next) {
+- dev_hold(ifp);
+- if (!is_aoe_netif(ifp))
+- continue;
+-
+- skb = new_skb(ifp, sizeof *h + sizeof *ch);
+- if (skb == NULL) {
+- printk(KERN_INFO "aoe: aoecmd_cfg: skb alloc failure\n");
+- continue;
+- }
+- h = (struct aoe_hdr *) skb->mac.raw;
+- memset(h, 0, sizeof *h + sizeof *ch);
+-
+- memset(h->dst, 0xff, sizeof h->dst);
+- memcpy(h->src, ifp->dev_addr, sizeof h->src);
+- h->type = __constant_cpu_to_be16(ETH_P_AOE);
+- h->verfl = AOE_HVER;
+- h->major = cpu_to_be16(aoemajor);
+- h->minor = aoeminor;
+- h->cmd = AOECMD_CFG;
+ struct sk_buff *sl;
-+
+
+- skb->next = sl;
+- sl = skb;
+- }
+- read_unlock(&dev_base_lock);
+ sl = aoecmd_cfg_pkts(aoemajor, aoeminor, NULL);
-+
+
aoenet_xmit(sl);
}
-
-@@ -619,23 +683,28 @@ aoecmd_cfg_rsp(struct sk_buff *skb)
+@@ -562,9 +625,6 @@ aoecmd_ata_id(struct aoedev *d)
+ f->waited = 0;
+ f->writedatalen = 0;
+
+- /* this message initializes the device, so we reset the rttavg */
+- d->rttavg = MAXTIMER;
+-
+ /* set up ata header */
+ ah->scnt = 1;
+ ah->cmdstat = WIN_IDENTIFY;
+@@ -572,12 +632,8 @@ aoecmd_ata_id(struct aoedev *d)
+
+ skb = skb_prepare(d, f);
+
+- /* we now want to start the rexmit tracking */
+- d->flags &= ~DEVFL_TKILL;
+- d->timer.data = (ulong) d;
++ d->rttavg = MAXTIMER;
+ d->timer.function = rexmit_timer;
+- d->timer.expires = jiffies + TIMERTICK;
+- add_timer(&d->timer);
+
+ return skb;
+ }
+@@ -619,23 +675,28 @@ aoecmd_cfg_rsp(struct sk_buff *skb)
if (bufcnt > MAXFRAMES) /* keep it reasonable */
bufcnt = MAXFRAMES;
@@ -419,106 +501,141 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
spin_unlock_irqrestore(&d->lock, flags);
---- gregkh-2.6.orig/drivers/block/aoe/aoe.h
-+++ gregkh-2.6/drivers/block/aoe/aoe.h
-@@ -75,8 +75,9 @@ enum {
- DEVFL_TKILL = (1<<1), /* flag for timer to know when to kill self */
- DEVFL_EXT = (1<<2), /* device accepts lba48 commands */
- DEVFL_CLOSEWAIT = (1<<3), /* device is waiting for all closes to revalidate */
-- DEVFL_WC_UPDATE = (1<<4), /* this device needs to update write cache status */
-- DEVFL_WORKON = (1<<4),
-+ DEVFL_GDALLOC = (1<<4), /* need to alloc gendisk */
-+ DEVFL_PAUSE = (1<<5),
-+ DEVFL_NEWSIZE = (1<<6), /* need to update dev size in block layer */
-
- BUFFL_FAIL = 1,
- };
-@@ -152,16 +153,18 @@ void aoechr_exit(void);
- void aoechr_error(char *);
-
- void aoecmd_work(struct aoedev *d);
--void aoecmd_cfg(ushort, unsigned char);
-+void aoecmd_cfg(ushort aoemajor, unsigned char aoeminor);
-+struct sk_buff *aoecmd_cfg_pkts(ushort, unsigned char, struct sk_buff **);
- void aoecmd_ata_rsp(struct sk_buff *);
- void aoecmd_cfg_rsp(struct sk_buff *);
-+void aoecmd_sleepwork(void *vp);
-
- int aoedev_init(void);
- void aoedev_exit(void);
- struct aoedev *aoedev_by_aoeaddr(int maj, int min);
-+struct aoedev *aoedev_by_sysminor_m(ulong sysminor, ulong bufcnt);
- void aoedev_downdev(struct aoedev *d);
--struct aoedev *aoedev_set(unsigned long, unsigned char *, struct net_device *, unsigned long);
--int aoedev_busy(void);
-+int aoedev_isbusy(struct aoedev *d);
-
- int aoenet_init(void);
- void aoenet_exit(void);
---- gregkh-2.6.orig/drivers/block/aoe/aoechr.c
-+++ gregkh-2.6/drivers/block/aoe/aoechr.c
-@@ -13,6 +13,7 @@ enum {
- MINOR_ERR = 2,
- MINOR_DISCOVER,
- MINOR_INTERFACES,
-+ MINOR_REVALIDATE,
- MSGSZ = 2048,
- NARGS = 10,
- NMSG = 100, /* message backlog to retain */
-@@ -41,6 +42,7 @@ static struct aoe_chardev chardevs[] = {
- { MINOR_ERR, "err" },
- { MINOR_DISCOVER, "discover" },
- { MINOR_INTERFACES, "interfaces" },
-+ { MINOR_REVALIDATE, "revalidate" },
- };
-
- static int
-@@ -62,6 +64,39 @@ interfaces(const char __user *str, size_
- return 0;
- }
+--- gregkh-2.6.orig/drivers/block/aoe/aoedev.c
++++ gregkh-2.6/drivers/block/aoe/aoedev.c
+@@ -12,6 +12,24 @@
+ static struct aoedev *devlist;
+ static spinlock_t devlist_lock;
-+static int
-+revalidate(const char __user *str, size_t size)
++int
++aoedev_isbusy(struct aoedev *d)
+{
-+ int major, minor, n;
-+ ulong flags;
-+ struct aoedev *d;
-+ char buf[16];
++ struct frame *f, *e;
+
-+ if (size >= sizeof buf)
-+ return -EINVAL;
-+ buf[sizeof buf - 1] = '\0';
-+ if (copy_from_user(buf, str, size))
-+ return -EFAULT;
++ f = d->frames;
++ e = f + d->nframes;
++ do {
++ if (f->tag != FREETAG) {
++ printk(KERN_DEBUG "aoe: %ld.%ld isbusy\n",
++ d->aoemajor, d->aoeminor);
++ return 1;
++ }
++ } while (++f < e);
+
-+ /* should be e%d.%d format */
-+ n = sscanf(buf, "e%d.%d", &major, &minor);
-+ if (n != 2) {
-+ printk(KERN_ERR "aoe: %s: invalid device specification\n",
-+ __FUNCTION__);
-+ return -EINVAL;
-+ }
-+ d = aoedev_by_aoeaddr(major, minor);
-+ if (!d)
-+ return -EINVAL;
++ return 0;
++}
+
-+ spin_lock_irqsave(&d->lock, flags);
-+ d->flags |= DEVFL_PAUSE;
-+ spin_unlock_irqrestore(&d->lock, flags);
-+ aoecmd_cfg(major, minor);
+ struct aoedev *
+ aoedev_by_aoeaddr(int maj, int min)
+ {
+@@ -28,6 +46,18 @@ aoedev_by_aoeaddr(int maj, int min)
+ return d;
+ }
+
++static void
++dummy_timer(ulong vp)
++{
++ struct aoedev *d;
+
-+ return 0;
++ d = (struct aoedev *)vp;
++ if (d->flags & DEVFL_TKILL)
++ return;
++ d->timer.expires = jiffies + HZ;
++ add_timer(&d->timer);
+}
+
- void
- aoechr_error(char *msg)
+ /* called with devlist lock held */
+ static struct aoedev *
+ aoedev_newdev(ulong nframes)
+@@ -44,6 +74,8 @@ aoedev_newdev(ulong nframes)
+ return NULL;
+ }
+
++ INIT_WORK(&d->work, aoecmd_sleepwork, d);
++
+ d->nframes = nframes;
+ d->frames = f;
+ e = f + nframes;
+@@ -52,6 +84,10 @@ aoedev_newdev(ulong nframes)
+
+ spin_lock_init(&d->lock);
+ init_timer(&d->timer);
++ d->timer.data = (ulong) d;
++ d->timer.function = dummy_timer;
++ d->timer.expires = jiffies + HZ;
++ add_timer(&d->timer);
+ d->bufpool = NULL; /* defer to aoeblk_gdalloc */
+ INIT_LIST_HEAD(&d->bufq);
+ d->next = devlist;
+@@ -67,9 +103,6 @@ aoedev_downdev(struct aoedev *d)
+ struct buf *buf;
+ struct bio *bio;
+
+- d->flags |= DEVFL_TKILL;
+- del_timer(&d->timer);
+-
+ f = d->frames;
+ e = f + d->nframes;
+ for (; f<e; f->tag = FREETAG, f->buf = NULL, f++) {
+@@ -92,16 +125,15 @@ aoedev_downdev(struct aoedev *d)
+ bio_endio(bio, bio->bi_size, -EIO);
+ }
+
+- if (d->nopen)
+- d->flags |= DEVFL_CLOSEWAIT;
+ if (d->gd)
+ d->gd->capacity = 0;
+
+- d->flags &= ~DEVFL_UP;
++ d->flags &= ~(DEVFL_UP | DEVFL_PAUSE);
+ }
+
++/* find it or malloc it */
+ struct aoedev *
+-aoedev_set(ulong sysminor, unsigned char *addr, struct net_device *ifp, ulong bufcnt)
++aoedev_by_sysminor_m(ulong sysminor, ulong bufcnt)
{
-@@ -114,6 +149,8 @@ aoechr_write(struct file *filp, const ch
- case MINOR_INTERFACES:
- ret = interfaces(buf, cnt);
- break;
-+ case MINOR_REVALIDATE:
-+ ret = revalidate(buf, cnt);
+ struct aoedev *d;
+ ulong flags;
+@@ -112,25 +144,19 @@ aoedev_set(ulong sysminor, unsigned char
+ 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;
+- memcpy(d->addr, addr, sizeof d->addr);
+- if ((d->flags & DEVFL_UP) == 0) {
+- aoedev_downdev(d); /* flushes outstanding frames */
++ if (d == NULL) {
++ d = aoedev_newdev(bufcnt);
++ if (d == NULL) {
++ spin_unlock_irqrestore(&devlist_lock, flags);
++ printk(KERN_INFO "aoe: aoedev_set: aoedev_newdev failure.\n");
++ return NULL;
++ }
+ d->sysminor = sysminor;
+ d->aoemajor = AOEMAJOR(sysminor);
+ d->aoeminor = AOEMINOR(sysminor);
}
- if (ret == 0)
- ret = cnt;
+
+- spin_unlock_irqrestore(&d->lock, flags);
++ spin_unlock_irqrestore(&devlist_lock, flags);
+ return d;
+ }
+
+@@ -161,6 +187,7 @@ aoedev_exit(void)
+
+ spin_lock_irqsave(&d->lock, flags);
+ aoedev_downdev(d);
++ d->flags |= DEVFL_TKILL;
+ spin_unlock_irqrestore(&d->lock, flags);
+
+ del_timer_sync(&d->timer);
diff --git a/driver/aoe-type-cleanups.patch-added-to-mm-tree.patch b/driver/aoe-type-cleanups.patch-added-to-mm-tree.patch
deleted file mode 100644
index c5adf54aa6c445..00000000000000
--- a/driver/aoe-type-cleanups.patch-added-to-mm-tree.patch
+++ /dev/null
@@ -1,299 +0,0 @@
-From akpm@osdl.org Wed Nov 30 15:20:58 2005
-From: Pekka Enberg <penberg@cs.helsinki.fi>
-Date: Wed, 30 Nov 2005 15:20:43 -0800
-Subject: aoe: type cleanups
-To: penberg@cs.helsinki.fi, axboe@suse.de, greg@kroah.com, jgarzik@pobox.com
-Message-Id: <200511302319.jAUNJOap015355@shell0.pdx.osdl.net>
-
-This patch replaces ulong with unsigned long and kmem_cache_t with struct
-kmem_cache in drivers/block/aoe/.
-
-Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
-Cc: Jeff Garzik <jgarzik@pobox.com>
-Cc: Jens Axboe <axboe@suse.de>
-Signed-off-by: Andrew Morton <akpm@osdl.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
----
- drivers/block/aoe/aoe.h | 28 ++++++++++++++--------------
- drivers/block/aoe/aoeblk.c | 10 +++++-----
- drivers/block/aoe/aoechr.c | 6 +++---
- drivers/block/aoe/aoecmd.c | 16 ++++++++--------
- drivers/block/aoe/aoedev.c | 11 ++++++-----
- drivers/block/aoe/aoemain.c | 6 +++---
- 6 files changed, 39 insertions(+), 38 deletions(-)
-
---- gregkh-2.6.orig/drivers/block/aoe/aoeblk.c
-+++ gregkh-2.6/drivers/block/aoe/aoeblk.c
-@@ -12,7 +12,7 @@
- #include <linux/netdevice.h>
- #include "aoe.h"
-
--static kmem_cache_t *buf_pool_cache;
-+static struct kmem_cache *buf_pool_cache;
-
- /* add attributes for our block devices in sysfs */
- static ssize_t aoedisk_show_state(struct gendisk * disk, char *page)
-@@ -83,7 +83,7 @@ static int
- aoeblk_open(struct inode *inode, struct file *filp)
- {
- struct aoedev *d;
-- ulong flags;
-+ unsigned long flags;
-
- d = inode->i_bdev->bd_disk->private_data;
-
-@@ -101,7 +101,7 @@ static int
- aoeblk_release(struct inode *inode, struct file *filp)
- {
- struct aoedev *d;
-- ulong flags;
-+ unsigned long flags;
-
- d = inode->i_bdev->bd_disk->private_data;
-
-@@ -124,7 +124,7 @@ aoeblk_make_request(request_queue_t *q,
- struct aoedev *d;
- struct buf *buf;
- struct sk_buff *sl;
-- ulong flags;
-+ unsigned long flags;
-
- blk_queue_bounce(q, &bio);
-
-@@ -198,7 +198,7 @@ aoeblk_gdalloc(void *vp)
- {
- struct aoedev *d = vp;
- struct gendisk *gd;
-- ulong flags;
-+ unsigned long flags;
-
- gd = alloc_disk(AOE_PARTITIONS);
- if (gd == NULL) {
---- gregkh-2.6.orig/drivers/block/aoe/aoechr.c
-+++ gregkh-2.6/drivers/block/aoe/aoechr.c
-@@ -19,7 +19,7 @@ enum {
- };
-
- struct aoe_chardev {
-- ulong minor;
-+ unsigned long minor;
- char name[32];
- };
-
-@@ -67,7 +67,7 @@ aoechr_error(char *msg)
- {
- struct ErrMsg *em;
- char *mp;
-- ulong flags, n;
-+ unsigned long flags, n;
-
- n = strlen(msg);
-
-@@ -147,7 +147,7 @@ aoechr_read(struct file *filp, char __us
- char *mp;
- struct ErrMsg *em;
- ssize_t len;
-- ulong flags;
-+ unsigned long flags;
-
- n = (unsigned long) filp->private_data;
- switch (n) {
---- gregkh-2.6.orig/drivers/block/aoe/aoecmd.c
-+++ gregkh-2.6/drivers/block/aoe/aoecmd.c
-@@ -17,7 +17,7 @@
- #define MAXWAIT (60 * 3) /* After MAXWAIT seconds, give up and fail dev */
-
- static struct sk_buff *
--new_skb(struct net_device *if_dev, ulong len)
-+new_skb(struct net_device *if_dev, unsigned long len)
- {
- struct sk_buff *skb;
-
-@@ -82,7 +82,7 @@ getframe(struct aoedev *d, int tag)
- static int
- newtag(struct aoedev *d)
- {
-- register ulong n;
-+ register unsigned long n;
-
- n = jiffies & 0xffff;
- return n |= (++d->lasttag & 0x7fff) << 16;
-@@ -112,7 +112,7 @@ aoecmd_ata_rw(struct aoedev *d, struct f
- struct aoe_atahdr *ah;
- struct buf *buf;
- struct sk_buff *skb;
-- ulong bcnt;
-+ unsigned long bcnt;
- register sector_t sector;
- char writebit, extbit;
-
-@@ -254,13 +254,13 @@ tsince(int tag)
- }
-
- static void
--rexmit_timer(ulong vp)
-+rexmit_timer(unsigned long vp)
- {
- struct aoedev *d;
- struct frame *f, *e;
- struct sk_buff *sl;
- register long timeout;
-- ulong flags, n;
-+ unsigned long flags, n;
-
- d = (struct aoedev *) vp;
- sl = NULL;
-@@ -382,7 +382,7 @@ aoecmd_ata_rsp(struct sk_buff *skb)
- struct buf *buf;
- struct sk_buff *sl;
- register long n;
-- ulong flags;
-+ unsigned long flags;
- char ebuf[128];
- u16 aoemajor;
-
-@@ -573,7 +573,7 @@ aoecmd_ata_id(struct aoedev *d)
-
- /* we now want to start the rexmit tracking */
- d->flags &= ~DEVFL_TKILL;
-- d->timer.data = (ulong) d;
-+ d->timer.data = (unsigned long) d;
- d->timer.function = rexmit_timer;
- d->timer.expires = jiffies + TIMERTICK;
- add_timer(&d->timer);
-@@ -587,7 +587,7 @@ aoecmd_cfg_rsp(struct sk_buff *skb)
- struct aoedev *d;
- struct aoe_hdr *h;
- struct aoe_cfghdr *ch;
-- ulong flags, sysminor, aoemajor;
-+ unsigned long flags, sysminor, aoemajor;
- u16 bufcnt;
- struct sk_buff *sl;
- enum { MAXFRAMES = 8 };
---- gregkh-2.6.orig/drivers/block/aoe/aoedev.c
-+++ gregkh-2.6/drivers/block/aoe/aoedev.c
-@@ -16,7 +16,7 @@ struct aoedev *
- aoedev_by_aoeaddr(int maj, int min)
- {
- struct aoedev *d;
-- ulong flags;
-+ unsigned long flags;
-
- spin_lock_irqsave(&devlist_lock, flags);
-
-@@ -30,7 +30,7 @@ aoedev_by_aoeaddr(int maj, int min)
-
- /* called with devlist lock held */
- static struct aoedev *
--aoedev_newdev(ulong nframes)
-+aoedev_newdev(unsigned long nframes)
- {
- struct aoedev *d;
- struct frame *f, *e;
-@@ -101,10 +101,11 @@ aoedev_downdev(struct aoedev *d)
- }
-
- struct aoedev *
--aoedev_set(ulong sysminor, unsigned char *addr, struct net_device *ifp, ulong bufcnt)
-+aoedev_set(unsigned long sysminor, unsigned char *addr,
-+ struct net_device *ifp, unsigned long bufcnt)
- {
- struct aoedev *d;
-- ulong flags;
-+ unsigned long flags;
-
- spin_lock_irqsave(&devlist_lock, flags);
-
-@@ -152,7 +153,7 @@ void
- aoedev_exit(void)
- {
- struct aoedev *d;
-- ulong flags;
-+ unsigned long flags;
-
- flush_scheduled_work();
-
---- gregkh-2.6.orig/drivers/block/aoe/aoe.h
-+++ gregkh-2.6/drivers/block/aoe/aoe.h
-@@ -90,12 +90,12 @@ enum {
-
- struct buf {
- struct list_head bufs;
-- ulong start_time; /* for disk stats */
-- ulong flags;
-- ulong nframesout;
-+ unsigned long start_time; /* for disk stats */
-+ unsigned long flags;
-+ unsigned long nframesout;
- char *bufaddr;
-- ulong resid;
-- ulong bv_resid;
-+ unsigned long resid;
-+ unsigned long bv_resid;
- sector_t sector;
- struct bio *bio;
- struct bio_vec *bv;
-@@ -103,7 +103,7 @@ struct buf {
-
- struct frame {
- int tag;
-- ulong waited;
-+ unsigned long waited;
- struct buf *buf;
- char *bufaddr;
- int writedatalen;
-@@ -117,11 +117,11 @@ struct aoedev {
- struct aoedev *next;
- unsigned char addr[6]; /* remote mac addr */
- ushort flags;
-- ulong sysminor;
-- ulong aoemajor;
-- ulong aoeminor;
-- ulong nopen; /* (bd_openers isn't available without sleeping) */
-- ulong rttavg; /* round trip average of requests/responses */
-+ unsigned long sysminor;
-+ unsigned long aoemajor;
-+ unsigned long aoeminor;
-+ unsigned long nopen; /* (bd_openers isn't available without sleeping) */
-+ unsigned long rttavg; /* round trip average of requests/responses */
- u16 fw_ver; /* version of blade's firmware */
- struct work_struct work;/* disk create work struct */
- struct gendisk *gd;
-@@ -136,8 +136,8 @@ struct aoedev {
- mempool_t *bufpool; /* for deadlock-free Buf allocation */
- struct list_head bufq; /* queue of bios to work on */
- struct buf *inprocess; /* the one we're currently working on */
-- ulong lasttag; /* last tag sent */
-- ulong nframes; /* number of frames below */
-+ unsigned long lasttag; /* last tag sent */
-+ unsigned long nframes; /* number of frames below */
- struct frame *frames;
- };
-
-@@ -160,7 +160,7 @@ int aoedev_init(void);
- void aoedev_exit(void);
- struct aoedev *aoedev_by_aoeaddr(int maj, int min);
- void aoedev_downdev(struct aoedev *d);
--struct aoedev *aoedev_set(ulong, unsigned char *, struct net_device *, ulong);
-+struct aoedev *aoedev_set(unsigned long, unsigned char *, struct net_device *, unsigned long);
- int aoedev_busy(void);
-
- int aoenet_init(void);
---- gregkh-2.6.orig/drivers/block/aoe/aoemain.c
-+++ gregkh-2.6/drivers/block/aoe/aoemain.c
-@@ -17,12 +17,12 @@ MODULE_VERSION(VERSION);
- enum { TINIT, TRUN, TKILL };
-
- static void
--discover_timer(ulong vp)
-+discover_timer(unsigned long vp)
- {
- static struct timer_list t;
-- static volatile ulong die;
-+ static volatile unsigned long die;
- static spinlock_t lock;
-- ulong flags;
-+ unsigned long flags;
- enum { DTIMERTICK = HZ * 60 }; /* one minute */
-
- switch (vp) {
diff --git a/driver/aoe-update-device-information-on-last-close.patch b/driver/aoe-update-device-information-on-last-close.patch
index 4d795dd1b75069..bcfefe002c0cc3 100644
--- a/driver/aoe-update-device-information-on-last-close.patch
+++ b/driver/aoe-update-device-information-on-last-close.patch
@@ -1,9 +1,9 @@
-From ecashin@coraid.com Tue Jan 3 13:31:33 2006
+From ecashin@coraid.com Thu Jan 19 11:11:56 2006
+Message-ID: <6708136ac02e66a47b3c32b744cd5ca1@coraid.com>
From: "Ed L. Cashin" <ecashin@coraid.com>
+Date: Thu, 19 Jan 2006 13:46:27 -0500
CC: ecashin@coraid.com, Greg K-H <greg@kroah.com>
-Subject: aoe: update device information on last close
-Date: Tue, 03 Jan 2006 16:08:25 -0500
-Message-ID: <87k6dhyq7q.fsf@coraid.com>
+Subject: [PATCH 2.6.15-git9] aoe [6/8]: update device information on last close
Instead of making the user wait or do it manually, refresh
device information on its last close by issuing a config
diff --git a/driver/aoe-update-driver-compatibility-string.patch b/driver/aoe-update-driver-compatibility-string.patch
new file mode 100644
index 00000000000000..b6aed810b1affb
--- /dev/null
+++ b/driver/aoe-update-driver-compatibility-string.patch
@@ -0,0 +1,29 @@
+From ecashin@coraid.com Thu Jan 19 11:11:56 2006
+Message-ID: <49d97c1e1c57eeb1017586aef4372f8c@coraid.com>
+Date: Thu, 19 Jan 2006 13:46:29 -0500
+From: "Ed L. Cashin" <ecashin@coraid.com>
+CC: ecashin@coraid.com, Greg K-H <greg@kroah.com>
+Subject: [PATCH 2.6.15-git9] aoe [7/8]: update driver compatibility string
+
+The aoe driver is not compatible with 2.6 kernels older
+than 2.6.2.
+
+Signed-off-by: "Ed L. Cashin" <ecashin@coraid.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+
+---
+ drivers/block/aoe/aoemain.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- gregkh-2.6.orig/drivers/block/aoe/aoemain.c
++++ gregkh-2.6/drivers/block/aoe/aoemain.c
+@@ -11,7 +11,7 @@
+
+ MODULE_LICENSE("GPL");
+ MODULE_AUTHOR("Sam Hopkins <sah@coraid.com>");
+-MODULE_DESCRIPTION("AoE block/char driver for 2.6.[0-9]+");
++MODULE_DESCRIPTION("AoE block/char driver for 2.6.2 and newer 2.6 kernels");
+ MODULE_VERSION(VERSION);
+
+ enum { TINIT, TRUN, TKILL };
diff --git a/driver/aoe-update-driver-version-number.patch b/driver/aoe-update-driver-version-number.patch
index b812df8f613680..5cff551a48f224 100644
--- a/driver/aoe-update-driver-version-number.patch
+++ b/driver/aoe-update-driver-version-number.patch
@@ -1,15 +1,16 @@
-From ecashin@coraid.com Tue Jan 3 13:31:36 2006
+From ecashin@coraid.com Thu Jan 19 11:12:07 2006
+Message-ID: <50543c54f330f77d820ae494a4efcfb8@coraid.com>
+Date: Thu, 19 Jan 2006 13:46:31 -0500
From: "Ed L. Cashin" <ecashin@coraid.com>
CC: ecashin@coraid.com, Greg K-H <greg@kroah.com>
-Subject: aoe: update driver version number
-Date: Tue, 03 Jan 2006 16:08:33 -0500
-Message-ID: <87bqytyq7i.fsf@coraid.com>
+Subject: [PATCH 2.6.15-git9] aoe [8/8]: update driver version number
Update aoe driver version number.
Signed-off-by: "Ed L. Cashin" <ecashin@coraid.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
---
drivers/block/aoe/aoe.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
@@ -19,7 +20,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
@@ -1,5 +1,5 @@
/* Copyright (c) 2004 Coraid, Inc. See COPYING for GPL terms. */
-#define VERSION "14"
-+#define VERSION "18"
++#define VERSION "21"
#define AOE_MAJOR 152
#define DEVICE_NAME "aoe"
diff --git a/driver/aoe-use-less-confusing-driver-name.patch b/driver/aoe-use-less-confusing-driver-name.patch
index 79634c89d2636f..126cb25ef06f5b 100644
--- a/driver/aoe-use-less-confusing-driver-name.patch
+++ b/driver/aoe-use-less-confusing-driver-name.patch
@@ -1,10 +1,9 @@
-From ecashin@coraid.com Thu Jan 5 08:42:05 2006
-From: Ed L Cashin <ecashin@coraid.com>
-To: Coywolf Qi Hunt <coywolf@gmail.com>
-Cc: Greg K-H <greg@kroah.com>
-Subject: aoe: use less confusing driver name
-Date: Thu, 05 Jan 2006 11:35:29 -0500
-Message-ID: <87hd8i63am.fsf@coraid.com>
+From ecashin@coraid.com Thu Jan 19 11:11:56 2006
+Message-ID: <7be904c15d72056646152df618e81904@coraid.com>
+From: "Ed L. Cashin" <ecashin@coraid.com>
+Date: Thu, 19 Jan 2006 13:46:22 -0500
+CC: ecashin@coraid.com, Greg K-H <greg@kroah.com>
+Subject: [PATCH 2.6.15-git9] aoe [4/8]: use less confusing driver name
Users were confused by the driver being called "aoe-2.6-$version".
This form looks less like a Linux kernel version number.
@@ -12,6 +11,7 @@ This form looks less like a Linux kernel version number.
Signed-off-by: "Ed L. Cashin" <ecashin@coraid.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
---
drivers/block/aoe/aoemain.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/driver/aoe-zero-packet-data-after-skb-allocation.patch b/driver/aoe-zero-packet-data-after-skb-allocation.patch
index cf678ed83ec5c2..803d6b01711dc9 100644
--- a/driver/aoe-zero-packet-data-after-skb-allocation.patch
+++ b/driver/aoe-zero-packet-data-after-skb-allocation.patch
@@ -1,22 +1,23 @@
-From ecashin@coraid.com Tue Jan 3 13:31:21 2006
+From ecashin@coraid.com Thu Jan 19 10:41:19 2006
+Message-ID: <1d5bd928255f552b12b1b329c92257bb@coraid.com>
From: "Ed L. Cashin" <ecashin@coraid.com>
+Date: Thu, 19 Jan 2006 12:37:24 -0500
CC: ecashin@coraid.com, Greg K-H <greg@kroah.com>
-Subject: aoe: zero packet data after skb allocation
-Date: Tue, 03 Jan 2006 16:05:03 -0500
-Message-ID: <87hd8l2fb4.fsf@coraid.com>
+Subject: [PATCH 2.6.15-git9] aoe [1/8]: zero packet data after skb allocation
Zero the data in new socket buffers to prevent leaking information.
Signed-off-by: "Ed L. Cashin" <ecashin@coraid.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
---
drivers/block/aoe/aoecmd.c | 1 +
1 file changed, 1 insertion(+)
--- gregkh-2.6.orig/drivers/block/aoe/aoecmd.c
+++ gregkh-2.6/drivers/block/aoe/aoecmd.c
-@@ -28,6 +28,7 @@ new_skb(struct net_device *if_dev, unsig
+@@ -28,6 +28,7 @@ new_skb(struct net_device *if_dev, ulong
skb->protocol = __constant_htons(ETH_P_AOE);
skb->priority = 0;
skb_put(skb, len);