atom feed26 messages in org.freebsd.freebsd-scsiRe: {da,sa,...}open bug?
FromSent OnAttachments
Yar TikhiyNov 22, 2002 10:28 am 
Nate LawsonNov 22, 2002 11:14 am 
Yar TikhiyNov 25, 2002 2:42 am 
Bruce EvansNov 25, 2002 4:28 am 
Yar TikhiyNov 25, 2002 6:05 am 
Nate LawsonNov 25, 2002 12:09 pm 
Nate LawsonNov 25, 2002 12:12 pm 
Bruce EvansNov 25, 2002 10:20 pm 
Yar TikhiyNov 29, 2002 11:37 am 
Nate LawsonDec 1, 2002 4:58 pm 
Yar TikhiyDec 6, 2002 3:59 am 
Nate LawsonDec 6, 2002 11:23 am 
Kenneth D. MerryDec 6, 2002 11:33 am 
Yar TikhiyDec 8, 2002 6:07 am 
Yar TikhiyDec 8, 2002 7:26 am 
Justin T. GibbsDec 8, 2002 10:10 pm 
Nate LawsonDec 9, 2002 1:49 pm 
Nate LawsonDec 9, 2002 1:52 pm 
Yar TikhiyDec 10, 2002 3:39 am 
Yar TikhiyDec 10, 2002 6:15 am 
Yar TikhiyDec 10, 2002 6:33 am 
Nate LawsonDec 10, 2002 1:20 pm 
Nate LawsonDec 10, 2002 1:23 pm 
Nate LawsonDec 10, 2002 1:29 pm 
Yar TikhiyDec 12, 2002 10:56 am 
Nate LawsonDec 13, 2002 10:54 am 
Subject:Re: {da,sa,...}open bug?
From:Nate Lawson (na@root.org)
Date:Nov 22, 2002 11:14:25 am
List:org.freebsd.freebsd-scsi

On Fri, 22 Nov 2002, Yar Tikhiy wrote:

The XXopen() methods of the da, sa etc drivers get a reference to the peripheral ("periph") through cam_periph_acquire() and don't release it on error exit. I suspect this leads to CAM wedge if the device is removed when its driver is in XXopen(). That is because the "periph" stays acquired (refcount > 0), but the XXopen() caller wouldn't invoke XXclose() subsequently since it sees XXopen() having failed. Thus CAM won't ever "forget" the device removed.

Moreover, after I had patched daopen() to release the peripheral if returning non-zero error code, the CAM wedge has gone.

Your approach sounds correct to me. open should call cam_periph_release if it errors out after cam_periph_acquire. Care to submit a patch?

-Nate

To Unsubscribe: send mail to majo@FreeBSD.org with "unsubscribe freebsd-scsi" in the body of the message