* SUCH DAMAGE.
*
* $FreeBSD: src/sys/cam/cam_ccb.h,v 1.15.2.3 2003/07/29 04:00:34 njl Exp $
- * $DragonFly: src/sys/bus/cam/cam_ccb.h,v 1.17 2008/02/10 00:01:01 pavalos Exp $
*/
#ifndef _CAM_CAM_CCB_H
struct ccb_pathinq_settings_sas sas;
char ccb_pathinq_settings_opaque[PATHINQ_SETTINGS_SIZE];
} xport_specific;
+ u_int maxio; /* Max supported I/O size, in bytes. */
};
/* Path Statistics CCB */
TASK_INIT(&softc->sysctl_task, 0, dasysctlinit, periph);
/* Check if the SIM does not want 6 byte commands */
+ bzero(&cpi, sizeof(cpi));
xpt_setup_ccb(&cpi.ccb_h, periph->path, /*priority*/1);
cpi.ccb_h.func_code = XPT_PATH_INQ;
xpt_action((union ccb *)&cpi);
*/
CAM_SIM_UNLOCK(periph->sim);
disk_create(periph->unit_number, &softc->disk, &da_ops);
- softc->disk.d_rawdev->si_iosize_max = MAXPHYS;
+ if (cpi.maxio == 0 || cpi.maxio > MAXPHYS)
+ softc->disk.d_rawdev->si_iosize_max = MAXPHYS;
+ else
+ softc->disk.d_rawdev->si_iosize_max = cpi.maxio;
CAM_SIM_LOCK(periph->sim);
/*