[vortex] NETDEV WATCHDOG: eth0: transmit timed out
Andrew Morton
andrewm@uow.edu.au
Wed, 20 Jun 2001 09:51:27 +1000
Gerrit Hannaert wrote:
>
> Thanks Andrew,
>
> Unfortunately I've got a bit of a recursive problem it seems now:
>
> I am trying out Mosix, and Mosix refuses to boot properly without SMP
> which appears to be a Linux bug. I reported this to the mosix list,
> Amnon Shiloh answered the following:
>
> > The bug is in Linux-2.4.5, in the "ioctl_by_bdev" routine of "fs/block_dev.c":
> > it fails to initiailize the "inode_fake.i_bdev" field, which therefore contains
> > a totally random value and the rest is a matter of luck. It just happened to
> > crash with MOSIX without SMP and not on other configurations.
> >
> > The fix is not trivial - well, in this particular case of the RAM-disk,
> > just to make it work we could place a dirty hack in the beginning of
> > "rd_ioctl":
> > if(current->pid == 0)
> > return(0);
>
> So you see, I'm a bit stuck. I need SMP enabled to boot Mosix properly
> (a 2.4.5 bug), but of course Mosix won't run reliably if the network
> cards won't run reliably (for which I would need a non-SMP kernel),
> which is also a linux bug.
>
> Any creative suggestions? Would Linus/Alan Cox hear these pleas for
> help? Incidentally I have tried the newer -ac series kernels but Mosix
> wouldn't apply to them very cleanly, and I'm not really a C programmer.
>
That's easy - just fix the ioctl_by_bdev() bug!
--- linux/fs/block_dev.c.orig Mon May 28 12:40:12 2001
+++ linux/fs/block_dev.c Mon May 28 12:40:12 2001
@@ -602,6 +602,7 @@
if (!bdev->bd_op->ioctl)
return -EINVAL;
inode_fake.i_rdev=rdev;
+ inode_fake.i_bdev=bdev;
init_waitqueue_head(&inode_fake.i_wait);
set_fs(KERNEL_DS);
res = bdev->bd_op->ioctl(&inode_fake, NULL, cmd, arg);
Then run with an uniprocessor kernel.