- Log in as root (or a user with sudo/su privileges or write access to devices)
- Copy this directory to your FreeBSD machine: https://people.freebsd.org/~ngie/bugs/cam_open_device/
- cd to the downloaded path and run "make" (don't call "make obj" first).
- Run "./cam_open_device /some/cam/device/path", e.g. "./cam_open_device /dev/da0".
- If passthrough support is enabled, it should open the device, but not do anything with it.
I get the following error message from the program when running it against my fake mpt(4) controller in my VMware fusion instance:
# ls -l /dev/pass*
crw------- 1 root operator 0x36 Mar 6 20:03 /dev/pass0
crw------- 1 root operator 0x37 Mar 6 20:03 /dev/pass1
# ./cam_open_device da0
cam_open_device: cam_open_device failed: Operation not permitted
cam_open_device: cam_errbuf is: cam_real_open_device: couldn't open passthrough device /dev/pass0
cam_real_open_device: Operation not permitted
(In reply to Ngie Cooper from comment #0)
Sidenote: there's only one consumer of this lib call in the tree: mptutil(8). I'm wondering if it's been broken over time..
Passthrough devices need to be opened with O_RDWR. This has pretty much always been the case: https://svnweb.freebsd.org/base?view=revision&revision=39317
(In reply to Mark Johnston from comment #2)
Confirmed (after changing mode to O_RDWR):
# ./cam_open_device /dev/da0
Hm... it seems either the requirement should be more explicit in either the manpage or the library.