Dell PowerEdge 1750 and mpt
David Sze
dsze at alumni.uwaterloo.ca
Wed Oct 15 18:39:36 PDT 2003
At 01:38 PM 15/10/2003 -0700, Nate Lawson wrote this to All:
>I'm out of time for this thread. Find the diff between your code and
>camcontrol inquiry -S and you'll find the bug.
Thanks for your help Nate. I don't expect you to respond to this message,
I'm just replying so that it shows up in the archives for anyone else that
might have problems with the Dell 1750 and mpt.
For those who are interested, it doesn't appear to be a bug in my code. I
replaced everything that I copied from camcontrol with what follows below,
which only uses the functions documented in cam(3). The kernel still
panic'ed after a few hours, with an identical backtrace to the one posted
previously.
Notice how this snippet of code never directly sends XPT_GET_TRAN_SETTINGS,
so the source of the junk pointer/CCB cannot be me.
Removing all traces of this serial # gathering code from our application
has gotten rid of the panics.
#include <stdio.h>
#include <camlib.h>
#include <fcntl.h>
#include <string.h>
#define DEVICE_MAX 16
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;
::bcopy(device.serial_num, kpcSerials + unLen,
device.serial_num_len);
unLen += device.serial_num_len;
::cam_close_spec_device(&device);
}
kpcSerials[unLen] = '\0';
::printf("%s\n", kpcSerials);
return 0;
}
More information about the freebsd-scsi
mailing list