lkml.org 
[lkml]   [2009]   [Jun]   [2]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH 2/2] cciss: Fix SCSI device reset handler
    On Tue, Jun 02, 2009 at 02:50:11PM +0200, Jens Axboe wrote:
    > On Fri, May 29 2009, Andrew Morton wrote:
    > > On Wed, 27 May 2009 15:30:07 -0500
    > > scameron@beardog.cca.cpqcorp.net wrote:
    > >
    > > > +static int wait_for_device_to_become_ready(ctlr_info_t *h,
    > > > + unsigned char lunaddr[])
    > > > +{
    > > > + int rc;
    > > > + int count = 0;
    > > > + int waittime = HZ;
    > > > + CommandList_struct *c;
    > > > +
    > > > + c = cmd_alloc(h, 1);
    > > > + if (!c) {
    > > > + printk(KERN_WARNING "cciss%d: out of memory in "
    > > > + "wait_for_device_to_become_ready.\n", h->ctlr);
    > > > + return IO_ERROR;
    > > > + }
    > > > +
    > > > + /* Send test unit ready until device ready, or give up. */
    > > > + while (count < 20) {
    > > > +
    > > > + /* Wait for a bit. do this first, because if we send
    > > > + * the TUR right away, the reset will just abort it.
    > > > + */
    > > > + set_current_state(TASK_INTERRUPTIBLE);
    > > > + schedule_timeout(waittime);
    > >
    > > That's schedule_timeout_interruptible().
    > >
    > > The problem with interruptible sleeps of this nature is that they are
    > > no-ops if the calling process happens to have signal_pending(). I
    > > suspect that this condition will break your driver.
    > >
    > > If so, switching to schedule_timeout_uninterruptible() will unbreak it.
    >
    > I added Stephens patch and your fixup.
    >
    > --
    > Jens Axboe
    >
    Thanks, Jens.


    \
     
     \ /
      Last update: 2009-06-02 17:55    [W:0.044 / U:0.168 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site