diff --git a/EtherDrive-2.6-HOWTO.sgml b/EtherDrive-2.6-HOWTO.sgml index 69e064a..16e1d5a 100644 --- a/EtherDrive-2.6-HOWTO.sgml +++ b/EtherDrive-2.6-HOWTO.sgml @@ -1019,6 +1019,8 @@ example of how its use might look in /etc/exports. /mnt/alpha 205.185.197.207(rw,sync,no_root_squash,fsid=20) +As the manpage says, each filesystem needs its own unique fsid. + Q: Why do I see "unknown partition table" errors in my logs?

diff --git a/NEWS b/NEWS index d6b66cb..f35bf84 100644 --- a/NEWS +++ b/NEWS @@ -1,4 +1,12 @@ -*- change-log -*- +2009-07-20 Ed Cashin + use ATA_CMD_ values from ata.h instead of WIN_ macros in hdreg.h + support older kernels where ata.h is incompatible with hdreg.h + allow aoedbg.c to see DEFINE_SPINLOCK in pre 2.6.11 kernels + +2009-06-29 Ed Cashin + do not use relay when Module.symvers is not present + 2009-04-09 Ed Cashin avoid premature I/O failure: maintain timings on frame reassigment version-71 diff --git a/conf/17-patches/old-new.diff b/conf/17-patches/old-new.diff index 316b571..581cb9d 100644 --- a/conf/17-patches/old-new.diff +++ b/conf/17-patches/old-new.diff @@ -1,11 +1,13 @@ ---- aoe6-51/linux/drivers/block/aoe/aoedev.c.20070808 2007-08-08 15:13:04.415879568 -0400 -+++ aoe6-51/linux/drivers/block/aoe/aoedev.c 2007-08-08 11:40:23.000000000 -0400 -@@ -12,8 +12,6 @@ - #include - #include "aoe.h" +diff --git a/linux/drivers/block/aoe/aoe.h b/linux/drivers/block/aoe/aoe.h +index f1f2b6e..d097a5c 100644 +--- a/linux/drivers/block/aoe/aoe.h ++++ b/linux/drivers/block/aoe/aoe.h +@@ -13,8 +13,6 @@ + #define ETH_P_AOE 0x88a2 + #endif -#define DEFINE_SPINLOCK(x) spinlock_t x = SPIN_LOCK_UNLOCKED - - static void dummy_timer(ulong); - static void aoedev_freedev(struct aoedev *); - static void freetgt(struct aoedev *d, struct aoetgt *t); + enum { + AOECMD_ATA, + AOECMD_CFG, diff --git a/conf/25-kv.sh b/conf/25-kv.sh index eabb373..e98ff68 100644 --- a/conf/25-kv.sh +++ b/conf/25-kv.sh @@ -5,6 +5,7 @@ for t in fs5 relay5 relay6; do $make_cmd > $log 2>&1 test "$?" = "0" && test -z "`grep 'relay_open.*undefined' $log`" && + test -z "`grep -i 'Module.symvers' $log`" && { echo $t; exit 0; } done diff --git a/conf/30-av.sh b/conf/30-av.sh new file mode 100644 index 0000000..3ceb493 --- /dev/null +++ b/conf/30-av.sh @@ -0,0 +1,5 @@ +f=linux/drivers/block/aoe/aoecmd.c +new="`fgrep '#include ' $f`" +test "$new" && { echo new; exit 0; } + +echo old diff --git a/conf/30-kv.sh b/conf/30-kv.sh new file mode 100644 index 0000000..8238b70 --- /dev/null +++ b/conf/30-kv.sh @@ -0,0 +1,10 @@ +. conf/kv.sh +echo 'obj-$(CONFIG_ATA_OVER_ETH) += '"$TESTNO"'.o' > conf/Makefile +$make_cmd > conf/$TESTNO.log 2>&1 +if test "$?" = "0"; then + echo new + exit 0 +fi + +echo old + diff --git a/conf/30-patches/old-new.diff b/conf/30-patches/old-new.diff new file mode 100644 index 0000000..dae6568 --- /dev/null +++ b/conf/30-patches/old-new.diff @@ -0,0 +1,79 @@ +commit 077517992e7cb7e0b4407fb9cb3bbcf01f3d36e2 +Author: Ed Cashin +Date: Mon Jul 20 14:19:06 2009 -0400 + + include ata.h and use ATA_CMD_PIO_* instead of WIN_* + + based on 04b3ab52a000ab7e718efc97e9fdd67d95002d11 + Author: Bartlomiej Zolnierkiewicz + Date: Wed Apr 1 21:42:24 2009 +0200 + + aoe: WIN_* -> ATA_CMD_* + + * Use ATA_CMD_* defines instead of WIN_* ones. + + * Include directly instead of through . + + Cc: Ed L. Cashin + Signed-off-by: Bartlomiej Zolnierkiewicz + +diff --git a/linux/drivers/block/aoe/aoecmd.c b/linux/drivers/block/aoe/aoecmd.c +index 741dd82..d188b5b 100644 +--- a/linux/drivers/block/aoe/aoecmd.c ++++ b/linux/drivers/block/aoe/aoecmd.c +@@ -4,6 +4,7 @@ + * Filesystem request handling methods + */ + ++#include + #include + #include + #include +@@ -377,7 +378,7 @@ ata_rw_frameinit(struct frame *f) + writebit = 0; + } + +- ah->cmdstat = WIN_READ | writebit | extbit; ++ ah->cmdstat = ATA_CMD_PIO_READ | writebit | extbit; + skb->dev = t->ifp->nd; + } + +@@ -1182,8 +1183,8 @@ noskb: if (buf) + + n = ahout->scnt << 9; + switch (ahout->cmdstat) { +- case WIN_READ: +- case WIN_READ_EXT: ++ case ATA_CMD_PIO_READ: ++ case ATA_CMD_PIO_READ_EXT: + if (skb->len < n) { + printk(KERN_ERR + "aoe: runt data size in read from e%ld.%d." +@@ -1194,15 +1195,15 @@ noskb: if (buf) + break; + } + bvcpy(f->bv, f->bv_off, skb, n); +- case WIN_WRITE: +- case WIN_WRITE_EXT: ++ case ATA_CMD_PIO_WRITE: ++ case ATA_CMD_PIO_WRITE_EXT: + spin_lock_irq(&d->lock); + ifp = getif(t, skb->dev); + if (ifp) + ifp->lost = 0; + spin_unlock_irq(&d->lock); + break; +- case WIN_IDENTIFY: ++ case ATA_CMD_ID_ATA: + if (skb->len < 512) { + printk(KERN_INFO + "aoe: runt data size in ataid from e%ld.%d." +@@ -1425,7 +1426,7 @@ aoecmd_ata_id(struct aoedev *d) + + /* set up ata header */ + ah->scnt = 1; +- ah->cmdstat = WIN_IDENTIFY; ++ ah->cmdstat = ATA_CMD_ID_ATA; + ah->lba3 = 0xa0; + + skb->dev = t->ifp->nd; diff --git a/conf/30.c b/conf/30.c new file mode 100644 index 0000000..8e6c0f8 --- /dev/null +++ b/conf/30.c @@ -0,0 +1,8 @@ +#include +#include + +int +testfn(int a, int b) +{ + return a + b; +} diff --git a/conf/30.txt b/conf/30.txt new file mode 100644 index 0000000..6c5361c --- /dev/null +++ b/conf/30.txt @@ -0,0 +1,19 @@ +2.6.30 no longer defines WIN_READ, etc., except *outside* of kernel +sources. + +In older kernels the ATA_CMD_PIO_* values are present, but in 2.6.9, +for instance, you can't include both hdreg.h and ata.h, so we support +those old kernels by using the WIN_* macros. + +commit 04b3ab52a000ab7e718efc97e9fdd67d95002d11 +Author: Bartlomiej Zolnierkiewicz +Date: Wed Apr 1 21:42:24 2009 +0200 + + aoe: WIN_* -> ATA_CMD_* + + * Use ATA_CMD_* defines instead of WIN_* ones. + + * Include directly instead of through . + + Cc: Ed L. Cashin + Signed-off-by: Bartlomiej Zolnierkiewicz diff --git a/linux/drivers/block/aoe/aoe.h b/linux/drivers/block/aoe/aoe.h index 47111ae..7666fd8 100644 --- a/linux/drivers/block/aoe/aoe.h +++ b/linux/drivers/block/aoe/aoe.h @@ -1,5 +1,5 @@ /* Copyright (c) 2009 Coraid, Inc. See COPYING for GPL terms. */ -#define VERSION "71" +#define VERSION "72pre2" #define AOE_MAJOR 152 #define DEVICE_NAME "aoe" diff --git a/linux/drivers/block/aoe/aoecmd.c b/linux/drivers/block/aoe/aoecmd.c index 741dd82..d188b5b 100644 --- a/linux/drivers/block/aoe/aoecmd.c +++ b/linux/drivers/block/aoe/aoecmd.c @@ -4,6 +4,7 @@ * Filesystem request handling methods */ +#include #include #include #include @@ -377,7 +378,7 @@ ata_rw_frameinit(struct frame *f) writebit = 0; } - ah->cmdstat = WIN_READ | writebit | extbit; + ah->cmdstat = ATA_CMD_PIO_READ | writebit | extbit; skb->dev = t->ifp->nd; } @@ -1182,8 +1183,8 @@ noskb: if (buf) n = ahout->scnt << 9; switch (ahout->cmdstat) { - case WIN_READ: - case WIN_READ_EXT: + case ATA_CMD_PIO_READ: + case ATA_CMD_PIO_READ_EXT: if (skb->len < n) { printk(KERN_ERR "aoe: runt data size in read from e%ld.%d." @@ -1194,15 +1195,15 @@ noskb: if (buf) break; } bvcpy(f->bv, f->bv_off, skb, n); - case WIN_WRITE: - case WIN_WRITE_EXT: + case ATA_CMD_PIO_WRITE: + case ATA_CMD_PIO_WRITE_EXT: spin_lock_irq(&d->lock); ifp = getif(t, skb->dev); if (ifp) ifp->lost = 0; spin_unlock_irq(&d->lock); break; - case WIN_IDENTIFY: + case ATA_CMD_ID_ATA: if (skb->len < 512) { printk(KERN_INFO "aoe: runt data size in ataid from e%ld.%d." @@ -1425,7 +1426,7 @@ aoecmd_ata_id(struct aoedev *d) /* set up ata header */ ah->scnt = 1; - ah->cmdstat = WIN_IDENTIFY; + ah->cmdstat = ATA_CMD_ID_ATA; ah->lba3 = 0xa0; skb->dev = t->ifp->nd;