Re: 3w-9xxx: scsi0: WARNING: (0x06:0x0037): Character ioctl (0x108)timed out, resetting card.

From: Justin Piszcz
Date: Thu Sep 02 2010 - 10:22:06 EST




On Wed, 1 Sep 2010, adam radford wrote:

On Wed, Sep 1, 2010 at 2:40 AM, Justin Piszcz <jpiszcz@xxxxxxxxxxxxxxx> wrote:

Could the lock/unlock be causing the issue?
Again, in 2.6.34, there are no latency problems or controller resets.

Justin,

We are looking into this issue and should get back to you soon.

The lock/unlock() kernel calls were not added by me but were part of a
series of 'BKL pushdown' patches added by someone to all drivers with
an ioctl interface. If you think those might be related to your
issue, you could try
removing those 2 lines of code and recompiling.

If you haven't already, please email you kernel .config files for both
the working kernel and non working kernel to the 3ware/LSI support
people you are in contact with.

Thanks.

-Adam


Hi,

Done, attached to the 3ware/LSI case, also available below:

wget http://home.comcast.net/~jpiszcz/20100902/2.6.34.1-config-good.txt
wget http://home.comcast.net/~jpiszcz/20100902/2.6.35.4-io-ctrl-resets.txt

Adam, per your recommendation, I removed the two kernel calls:
+ lock_kernel();
+ unlock_kernel();

Recompiled and the problem persisted, so I took the old driver and copied it
to the new kernel:

p34:/usr/src# cp linux-2.6.34.6/drivers/scsi/3w-9xxx.h linux-2.6.35.4/drivers/scsi/3w-9xxx.h
p34:/usr/src# cp linux-2.6.34.6/drivers/scsi/3w-9xxx.c linux-2.6.35.4/drivers/scsi/3w-9xxx.c
p34:/usr/src#

Moving the 2.6.34.6 driver to 2.6.35.4: success, so it is not a kernel bug,
but a driver issue:

Any other recommendations on what is going on here?

If it isn't the kernel locks, it must be something else:

--- linux-2.6.34.6/drivers/scsi/3w-9xxx.c 2010-08-26 19:44:38.000000000 -0400
+++ linux-2.6.35.4/drivers/scsi/3w-9xxx.c 2010-08-26 19:47:12.000000000 -0400
- Written By: Adam Radford <linuxraid@xxxxxxxx>
- Modifications By: Tom Couch <linuxraid@xxxxxxxx>
+ Written By: Adam Radford <linuxraid@xxxxxxx>
+ Modifications By: Tom Couch <linuxraid@xxxxxxx>
+ Copyright (C) 2010 LSI Corporation.
- linuxraid@xxxxxxxx
+ linuxraid@xxxxxxx
- http://www.amcc.com
+ http://www.lsi.com
+ 2.26.02.014 - Force 60 second timeout default.
-#define TW_DRIVER_VERSION "2.26.02.013"
+#define TW_DRIVER_VERSION "2.26.02.014"
-MODULE_AUTHOR ("AMCC");
+MODULE_AUTHOR ("LSI");
-static int twa_chrdev_ioctl(struct inode *inode, struct file *file, unsigned int cmd, unsigned long arg);
+static long twa_chrdev_ioctl(struct file *file, unsigned int cmd, unsigned long arg);
- .ioctl = twa_chrdev_ioctl,
+ .unlocked_ioctl = twa_chrdev_ioctl,
-static int twa_chrdev_ioctl(struct inode *inode, struct file *file, unsigned int cmd, unsigned long arg)
+static long twa_chrdev_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
+ struct inode *inode = file->f_path.dentry->d_inode;
+ lock_kernel();
+
+ unlock_kernel();
+/* This function gets called when a disk is coming on-line */
+static int twa_slave_configure(struct scsi_device *sdev)
+{
+ /* Force 60 second timeout */
+ blk_queue_rq_timeout(sdev->request_queue, 60 * HZ);
+
+ return 0;
+} /* End twa_slave_configure() */
+
+ .slave_configure = twa_slave_configure,


Justin.

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/