Date: Fri, 22 Nov 2002 11:14:47 -0800 (PST)
From: Nate Lawson <nate@root.org>
To: Yar Tikhiy <yar@freebsd.org>
Cc: freebsd-scsi@freebsd.org
Subject: Re: {da,sa,...}open bug?
Message-ID: <Pine.BSF.4.21.0211221113280.71270-100000@root.org>
In-Reply-To: <20021122212846.C60810@comp.chem.msu.su>
next in thread | previous in thread | raw e-mail | index | archive | help
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 majordomo@FreeBSD.org
with "unsubscribe freebsd-scsi" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.BSF.4.21.0211221113280.71270-100000>
