Re: [PATCH] cciss: add 30 second initial timeout wait on controller reset

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, 2010-03-15 at 14:13 +0100, Tomas Henzl wrote:
> It looks like the patch - cciss: remove 30 second initial timeout on controller reset
> http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=5e18cfd04feca78cc08a6b8b71a60a610de81eaa
> has caused a regression. 
> During kdump a box with an 5i controller freezes.
> The HP Smart Array 5i Controller probably needs some more time 
> of inactivity after reset.
> To get rid of it we can revert the above mentioned patch or use
> the patch below which adds an additional timeout only for this 
> one controller (HP Smart Array 5i). I haven't seen this with other
> cciss controllers.
> 
> cciss: add 30 second initial timeout wait on controller reset
> 
> Signed-off-by: Tomas Henzl <thenzl@xxxxxxxxxx>
> 
> diff --git a/drivers/block/cciss.c b/drivers/block/cciss.c
> index 9e3af30..34ec2c7 100644
> --- a/drivers/block/cciss.c
> +++ b/drivers/block/cciss.c
> @@ -4172,9 +4172,13 @@ static int __devinit cciss_init_one(struct pci_dev *pdev,
>  		if (cciss_hard_reset_controller(pdev) || cciss_reset_msi(pdev))
>  			return -ENODEV;
>  
> -		/* Now try to get the controller to respond to a no-op. Some
> -		   devices (notably the HP Smart Array 5i Controller) need
> -		   up to 30 seconds to respond. */
> +		/* The HP Smart Array 5i Controller needs
> +		 * at least 20 seconds before first status checking
> +		 * set it to 30 seconds for this controller to be sure */
> +		if (0x4080 == pdev->subsystem_device)
> +			schedule_timeout_uninterruptible(30*HZ);

The HZ thing is deprecated, plus if you really want an interruptible
sleep, you need to check for signals going in.

It's far better to use msleep_interruptible, which does all of this for
you (of course, it might be even better if we had ssleep_interruptible).

James


> +
> +		/* Now try to get the controller to respond to a no-op. */
>  		for (i=0; i<30; i++) {
>  			if (cciss_noop(pdev) == 0)
>  				break;
> 
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at  http://vger.kernel.org/majordomo-info.html


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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [SCSI Target Devel]     [Linux SCSI Target Infrastructure]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Linux IIO]     [Samba]     [Device Mapper]
  Powered by Linux