Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 22 Nov 2002 21:28:46 +0300
From:      Yar Tikhiy <yar@freebsd.org>
To:        freebsd-scsi@freebsd.org
Subject:   {da,sa,...}open bug?
Message-ID:  <20021122212846.C60810@comp.chem.msu.su>

next in thread | raw e-mail | index | archive | help
Hi folks,

While debugging the USB mass storage driver, which uses CAM,
I ran into the following doubt.

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.

I'm new to CAM so I'd like to ask if my idea is correct.  Thanks.

-- 
Yar

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?20021122212846.C60810>