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