===== Common Access Method (CAM) Storage Subsystem ===== CAM is the **C**ommon **A**ccess **M**ethod storage subsystem in %%FreeBSD%%, providing a uniform and modular method implementing drivers to control various SCSI ATA, NVMe, and MMC/SD storage devices. ===== Documentation ===== * [[https://man.freebsd.org/cam(4)|FreeBSD cam(4) manual page]] * [[https://man.freebsd.org/camcontrol(8)|camcontrol(8): CAM control program]] * [[https://docs.freebsd.org/en/books/arch-handbook/scsi/|FreeBSD Architecture Handbook: Chapter 12. Common Access Method SCSI Controllers]] ===== More Information ===== * [[https://uditagarwal.in/understanding-freebsds-cam-framework/|Understanding FreeBSD’s CAM Framework]] (Udit Kumar Agarwal, 2018) * [[https://people.freebsd.org/~imp/bsdcan2015/iosched-v3.pdf|I/O Scheduling in FreeBSD's CAM Subsystem (PDF)]] (WarnerLosh) ===== Historical Page Notes ===== List of things desired for CAM: * Provide a means of specifying a cam_path filter for xpt_register_async() and still get the initial broadcast of related events that occurs if the path is not specified today, with the filter applied. * Modify cam_ed so that transport-specific parts are in an union instead of alongside each other. Might be best to move those structures into transport-specific headers too.