From: "McMullan, Jason" <jason.mcmullan@timesys.com>
To: "Linux Kernel" <linux-kernel@vger.kernel.org>,
"PPC_LINUX" <linuxppc-embedded@ozlabs.org>
Subject: [PATCH 2.6.11.7] ATA Over Ethernet Root, Mark 2
Date: Fri, 13 May 2005 15:17:58 -0400
Date: Fri, 13 May 2005 15:12:07 -0400 [thread overview]
Message-ID: <1116011879.9050.92.camel@jmcmullan.timesys> (raw)
[-- Attachment #1.1: Type: text/plain, Size: 230 bytes --]
Second revision of my ATA Over Ethernet root device patch, now with
white space correction and removed debugging crud.
Any more comment, suggestions?
--
Jason McMullan <jason.mcmullan@timesys.com>
TimeSys Corporation
[-- Attachment #1.2: aoe-root.patch --]
[-- Type: text/x-patch, Size: 4608 bytes --]
#### Auto-generated patch ####
Date: Fri, 13 May 2005 15:15:04 -0400
Signed-Off-By: Jason McMullan <jason.mcmullan@timesys.com>
Description: ATA Over Ethernet root device
ie 'root=/dev/etherd/e0.0/disc' on the kernel command line
Depends:
linux-2.6.11.7
###############################
Index of changes:
Kconfig | 15 +++++++++++++++
aoe/aoe.h | 1 +
aoe/aoeblk.c | 1 +
aoe/aoedev.c | 16 ++++++++++++++++
aoe/aoemain.c | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++
5 files changed, 83 insertions(+)
--- linux-orig/drivers/block/Kconfig
+++ linux/drivers/block/Kconfig
@@ -506,4 +506,19 @@
This driver provides Support for ATA over Ethernet block
devices like the Coraid EtherDrive (R) Storage Blade.
+config ATA_OVER_ETH_ROOT
+ bool "ATA over Ethernet root device"
+ depends on ATA_OVER_ETH=y
+ help
+ If you want to use ATA Over Ethernet as the root device,
+ set this to 'y'
+
+config ATA_OVER_ETH_ROOT_SHELF
+ int "Shelf ID"
+ depends on ATA_OVER_ETH_ROOT
+
+config ATA_OVER_ETH_ROOT_SLOT
+ int "Slot ID"
+ depends on ATA_OVER_ETH_ROOT
+
endmenu
--- linux-orig/drivers/block/aoe/aoe.h
+++ linux/drivers/block/aoe/aoe.h
@@ -153,6 +153,7 @@
int aoedev_init(void);
void aoedev_exit(void);
struct aoedev *aoedev_bymac(unsigned char *);
+struct aoedev *aoedev_bymajor_minor(ulong major, ulong minor);
void aoedev_downdev(struct aoedev *d);
struct aoedev *aoedev_set(ulong, unsigned char *, struct net_device *, ulong);
int aoedev_busy(void);
--- linux-orig/drivers/block/aoe/aoeblk.c
+++ linux/drivers/block/aoe/aoeblk.c
@@ -229,6 +229,7 @@
gd->capacity = d->ssize;
snprintf(gd->disk_name, sizeof gd->disk_name, "etherd/e%ld.%ld",
d->aoemajor, d->aoeminor);
+ strncpy(gd->devfs_name, gd->disk_name, sizeof gd->devfs_name);
gd->queue = &d->blkq;
d->gd = gd;
--- linux-orig/drivers/block/aoe/aoedev.c
+++ linux/drivers/block/aoe/aoedev.c
@@ -28,6 +28,22 @@
return d;
}
+struct aoedev *aoedev_bymajor_minor(ulong major, ulong minor)
+{
+ struct aoedev *d;
+ ulong flags;
+
+ spin_lock_irqsave(&devlist_lock, flags);
+
+ for (d = devlist; d; d = d->next)
+ if (d->aoemajor == major && d->aoeminor == minor)
+ break;
+
+ spin_unlock_irqrestore(&devlist_lock, flags);
+ return d;
+}
+
+
/* called with devlist lock held */
static struct aoedev *
aoedev_newdev(ulong nframes)
--- linux-orig/drivers/block/aoe/aoemain.c
+++ linux/drivers/block/aoe/aoemain.c
@@ -7,6 +7,14 @@
#include <linux/hdreg.h>
#include <linux/blkdev.h>
#include <linux/module.h>
+#include <linux/devfs_fs_kernel.h>
+
+/* AOE Root device includes */
+#include <linux/delay.h>
+#include <linux/rtnetlink.h>
+#include <linux/netdevice.h>
+#include <net/sock.h>
+
#include "aoe.h"
MODULE_LICENSE("GPL");
@@ -53,6 +61,41 @@
}
}
+#ifdef CONFIG_ATA_OVER_ETH_ROOT
+void aoe_root(unsigned long major, unsigned long minor)
+{
+ struct net_device *dev;
+
+ printk(KERN_INFO
+ "aoe: Waiting for root AOE device e%ld.%ld\n", major, minor);
+
+ /* Give hardware a chance to settle */
+ msleep(500);
+
+ rtnl_shlock();
+ /* bring loopback device up first */
+ if (dev_change_flags(&loopback_dev, loopback_dev.flags | IFF_UP) < 0)
+ printk(KERN_ERR "AOE Root: Failed to open %s\n", loopback_dev.name);
+
+ /* Setup all network devices */
+ for (dev = dev_base; dev ; dev = dev->next) {
+ if (dev == &loopback_dev)
+ continue;
+ dev_change_flags(dev, dev->flags | IFF_UP);
+ }
+ rtnl_shunlock();
+
+ /* Give drivers a chance to settle */
+ ssleep(1);
+
+ do {
+ aoecmd_cfg(major, minor);
+ msleep(1);
+ } while (!aoedev_bymajor_minor(CONFIG_ATA_OVER_ETH_ROOT_SHELF,CONFIG_ATA_OVER_ETH_ROOT_SLOT));
+
+}
+#endif
+
static void
aoe_exit(void)
{
@@ -63,6 +106,7 @@
aoechr_exit();
aoedev_exit();
aoeblk_exit(); /* free cache after de-allocating bufs */
+ devfs_remove("etherd");
}
static int __init
@@ -70,6 +114,8 @@
{
int ret;
+ devfs_mk_dir("etherd");
+
ret = aoedev_init();
if (ret)
return ret;
@@ -91,6 +137,9 @@
printk(KERN_INFO
"aoe: aoe_init: AoE v2.6-%s initialised.\n",
VERSION);
+#ifdef CONFIG_ATA_OVER_ETH_ROOT
+ aoe_root(CONFIG_ATA_OVER_ETH_ROOT_SHELF,CONFIG_ATA_OVER_ETH_ROOT_SLOT);
+#endif
discover_timer(TINIT);
return 0;
@@ -102,6 +151,7 @@
aoechr_exit();
chr_fail:
aoedev_exit();
+ devfs_remove("etherd");
printk(KERN_INFO "aoe: aoe_init: initialisation failure.\n");
return ret;
[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 189 bytes --]
next reply other threads:[~2005-05-13 19:18 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-05-13 19:17 McMullan, Jason [this message]
2005-05-14 7:28 ` [PATCH 2.6.11.7] ATA Over Ethernet Root, Mark 2 Greg KH
2005-05-16 13:20 ` McMullan, Jason
2005-05-16 16:20 ` Greg KH
2005-05-16 17:03 ` Ed L Cashin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1116011879.9050.92.camel@jmcmullan.timesys \
--to=jason.mcmullan@timesys.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linuxppc-embedded@ozlabs.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox