Changeset View
Changeset View
Standalone View
Standalone View
sys/cam/nvme/nvme_da.c
Show All 12 Lines | |||||
#endif | #endif | ||||
#ifndef NDA_DEFAULT_RETRY | #ifndef NDA_DEFAULT_RETRY | ||||
#define NDA_DEFAULT_RETRY 4 | #define NDA_DEFAULT_RETRY 4 | ||||
#endif | #endif | ||||
#ifndef NDA_MAX_TRIM_ENTRIES | #ifndef NDA_MAX_TRIM_ENTRIES | ||||
#define NDA_MAX_TRIM_ENTRIES (NVME_MAX_DSM_TRIM / sizeof(struct nvme_dsm_range))/* Number of DSM trims to use, max 256 */ | #define NDA_MAX_TRIM_ENTRIES (NVME_MAX_DSM_TRIM / sizeof(struct nvme_dsm_range))/* Number of DSM trims to use, max 256 */ | ||||
#endif | #endif | ||||
static SYSCTL_NODE(_kern_cam, OID_AUTO, nda, CTLFLAG_RD, 0, | static SYSCTL_NODE(_kern_cam, OID_AUTO, nda, CTLFLAG_RD | CTLFLAG_MPSAFE, 0, | ||||
"CAM Direct Access Disk driver"); | "CAM Direct Access Disk driver"); | ||||
//static int nda_retry_count = NDA_DEFAULT_RETRY; | //static int nda_retry_count = NDA_DEFAULT_RETRY; | ||||
static int nda_send_ordered = NDA_DEFAULT_SEND_ORDERED; | static int nda_send_ordered = NDA_DEFAULT_SEND_ORDERED; | ||||
static int nda_default_timeout = NDA_DEFAULT_TIMEOUT; | static int nda_default_timeout = NDA_DEFAULT_TIMEOUT; | ||||
static int nda_max_trim_entries = NDA_MAX_TRIM_ENTRIES; | static int nda_max_trim_entries = NDA_MAX_TRIM_ENTRIES; | ||||
SYSCTL_INT(_kern_cam_nda, OID_AUTO, max_trim, CTLFLAG_RDTUN, | SYSCTL_INT(_kern_cam_nda, OID_AUTO, max_trim, CTLFLAG_RDTUN, | ||||
&nda_max_trim_entries, NDA_MAX_TRIM_ENTRIES, | &nda_max_trim_entries, NDA_MAX_TRIM_ENTRIES, | ||||
"Maximum number of BIO_DELETE to send down as a DSM TRIM."); | "Maximum number of BIO_DELETE to send down as a DSM TRIM."); | ||||
Show All 24 Lines | |||||
softc = (struct nda_softc *)periph->softc; | softc = (struct nda_softc *)periph->softc; | ||||
snprintf(tmpstr, sizeof(tmpstr), "CAM NDA unit %d", periph->unit_number); | snprintf(tmpstr, sizeof(tmpstr), "CAM NDA unit %d", periph->unit_number); | ||||
snprintf(tmpstr2, sizeof(tmpstr2), "%d", periph->unit_number); | snprintf(tmpstr2, sizeof(tmpstr2), "%d", periph->unit_number); | ||||
sysctl_ctx_init(&softc->sysctl_ctx); | sysctl_ctx_init(&softc->sysctl_ctx); | ||||
softc->flags |= NDA_FLAG_SCTX_INIT; | softc->flags |= NDA_FLAG_SCTX_INIT; | ||||
softc->sysctl_tree = SYSCTL_ADD_NODE_WITH_LABEL(&softc->sysctl_ctx, | softc->sysctl_tree = SYSCTL_ADD_NODE_WITH_LABEL(&softc->sysctl_ctx, | ||||
SYSCTL_STATIC_CHILDREN(_kern_cam_nda), OID_AUTO, tmpstr2, | SYSCTL_STATIC_CHILDREN(_kern_cam_nda), OID_AUTO, tmpstr2, | ||||
CTLFLAG_RD, 0, tmpstr, "device_index"); | CTLFLAG_RD | CTLFLAG_MPSAFE, 0, tmpstr, "device_index"); | ||||
if (softc->sysctl_tree == NULL) { | if (softc->sysctl_tree == NULL) { | ||||
printf("ndasysctlinit: unable to allocate sysctl tree\n"); | printf("ndasysctlinit: unable to allocate sysctl tree\n"); | ||||
cam_periph_release(periph); | cam_periph_release(periph); | ||||
return; | return; | ||||
} | } | ||||
SYSCTL_ADD_INT(&softc->sysctl_ctx, SYSCTL_CHILDREN(softc->sysctl_tree), | SYSCTL_ADD_INT(&softc->sysctl_ctx, SYSCTL_CHILDREN(softc->sysctl_tree), | ||||
OID_AUTO, "unmapped_io", CTLFLAG_RD, | OID_AUTO, "unmapped_io", CTLFLAG_RD, | ||||
Show All 18 Lines | |||||
SYSCTL_ADD_INT(&softc->sysctl_ctx, SYSCTL_CHILDREN(softc->sysctl_tree), | SYSCTL_ADD_INT(&softc->sysctl_ctx, SYSCTL_CHILDREN(softc->sysctl_tree), | ||||
OID_AUTO, "rotating", CTLFLAG_RD, &nda_rotating_media, 1, | OID_AUTO, "rotating", CTLFLAG_RD, &nda_rotating_media, 1, | ||||
"Rotating media"); | "Rotating media"); | ||||
#ifdef CAM_IO_STATS | #ifdef CAM_IO_STATS | ||||
softc->sysctl_stats_tree = SYSCTL_ADD_NODE(&softc->sysctl_stats_ctx, | softc->sysctl_stats_tree = SYSCTL_ADD_NODE(&softc->sysctl_stats_ctx, | ||||
SYSCTL_CHILDREN(softc->sysctl_tree), OID_AUTO, "stats", | SYSCTL_CHILDREN(softc->sysctl_tree), OID_AUTO, "stats", | ||||
CTLFLAG_RD, 0, "Statistics"); | CTLFLAG_RD | CTLFLAG_MPSAFE, 0, "Statistics"); | ||||
if (softc->sysctl_stats_tree == NULL) { | if (softc->sysctl_stats_tree == NULL) { | ||||
printf("ndasysctlinit: unable to allocate sysctl tree for stats\n"); | printf("ndasysctlinit: unable to allocate sysctl tree for stats\n"); | ||||
cam_periph_release(periph); | cam_periph_release(periph); | ||||
return; | return; | ||||
} | } | ||||
SYSCTL_ADD_INT(&softc->sysctl_stats_ctx, | SYSCTL_ADD_INT(&softc->sysctl_stats_ctx, | ||||
SYSCTL_CHILDREN(softc->sysctl_stats_tree), | SYSCTL_CHILDREN(softc->sysctl_stats_tree), | ||||
OID_AUTO, "timeouts", CTLFLAG_RD, | OID_AUTO, "timeouts", CTLFLAG_RD, | ||||
Show All 12 Lines |