Date: Thu, 16 Oct 2003 09:20:33 -0400 From: David Sze <dsze@alumni.uwaterloo.ca> To: "Kenneth D. Merry" <ken@kdm.org> Cc: freebsd-scsi@freebsd.org Subject: Re: Dell PowerEdge 1750 and mpt Message-ID: <6.0.0.22.2.20031016090937.039ff8c8@mail.distrust.net> In-Reply-To: <20031016053120.GA49838@panzer.kdm.org> References: <6.0.0.22.2.20031014232154.03a0b990@mail.distrust.net> <6.0.0.22.2.20031015080310.03ac9b88@mail.distrust.net> <20031015100215.U34498@root.org> <20031015180131.GA25402@pooh.distrust.net> <20031015133813.O35236@root.org> <6.0.0.22.2.20031015212813.039fcd48@mail.distrust.net> <20031016053120.GA49838@panzer.kdm.org>
index | next in thread | previous in thread | raw e-mail
At 11:31 PM 15/10/2003 -0600, Kenneth D. Merry wrote this to All:
>On Wed, Oct 15, 2003 at 21:41:30 -0400, David Sze wrote:
> > Notice how this snippet of code never directly sends
> XPT_GET_TRAN_SETTINGS,
> > so the source of the junk pointer/CCB cannot be me.
>
>libcam sends the XPT_GET_TRAN_SETTINGS CCB, to fill in sync rate/bus width
>fields in the cam_device structure.
Right, I see where that is in libcam. So if I just want the serial, then I
should just open the appropriate /dev/passX and send a XPT_GDEV_TYPE, and
that shouldn't tickle the panic with mpt(4).
> > Removing all traces of this serial # gathering code from our application
> > has gotten rid of the panics.
>
>Since it works on other drivers and fails with the mpt(4) driver, it may
>be a problem with the mpt(4) driver.
Or possibly with the hardware/firmware revision of the 53c1030 in the Dell
1750. I have three IBM eServer 345 boxes that also use mpt(4), and so far
they aren't showing the panic problem when running the same code.
> > int main() {
> > struct cam_device device;
> > char kpcSerials[sizeof(device.serial_num)*DEVICE_MAX+1];
> > unsigned int unLen = 0;
> >
> > for (int n = 0; n < DEVICE_MAX; ++n) {
> > if (NULL == ::cam_open_spec_device("pass", n, O_RDWR, &device))
> > break;
>
>You'd probably be better off going back to your original code that uses an
>XPT_DEV_MATCH CCB.
>
>With the above code, you'll run into problems if you've got sparse unit
>numbers. e.g. if you've got a device hardwired, or if you rescan a bus or
>device and it goes away. (e.g. you've got pass0, pass1, pass2, and pass4)
Not to mention that a ::cam_open_spec_device() followed by a
::cam_close_spec_device() seems to result in a descriptor leak. I wrapped
the previous code in a while(1){}, and /dev/xpt0 wasn't being closed.
help
Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?6.0.0.22.2.20031016090937.039ff8c8>
