FreeBSD kernel CAM code
|
#include <sys/cdefs.h>
#include "opt_ada.h"
#include <sys/param.h>
#include <sys/systm.h>
#include <sys/kernel.h>
#include <sys/bio.h>
#include <sys/sysctl.h>
#include <sys/taskqueue.h>
#include <sys/lock.h>
#include <sys/mutex.h>
#include <sys/conf.h>
#include <sys/devicestat.h>
#include <sys/eventhandler.h>
#include <sys/malloc.h>
#include <sys/endian.h>
#include <sys/cons.h>
#include <sys/proc.h>
#include <sys/reboot.h>
#include <sys/sbuf.h>
#include <geom/geom.h>
#include <geom/geom_disk.h>
#include <cam/cam.h>
#include <cam/cam_ccb.h>
#include <cam/cam_periph.h>
#include <cam/cam_xpt_periph.h>
#include <cam/scsi/scsi_all.h>
#include <cam/scsi/scsi_da.h>
#include <cam/cam_sim.h>
#include <cam/cam_iosched.h>
#include <cam/ata/ata_all.h>
Go to the source code of this file.
Data Structures | |
struct | ada_zone_desc |
struct | disk_params |
struct | trim_request |
struct | ada_softc |
struct | ada_quirk_entry |
Macros | |
#define | ATA_MAX_28BIT_LBA 268435455UL |
#define | ADA_FLAG_STRING |
#define | ADA_Q_BIT_STRING |
#define | ccb_state ppriv_field0 |
#define | ccb_bp ppriv_ptr1 |
#define | TRIM_MAX_BLOCKS 8 |
#define | TRIM_MAX_RANGES (TRIM_MAX_BLOCKS * ATA_DSM_BLK_RANGES) |
#define | ADA_ANNOUNCETMP_SZ 80 |
#define | ADA_ANNOUNCE_SZ 400 |
#define | ADA_DEFAULT_TIMEOUT 30 /* Timeout in seconds */ |
#define | ADA_DEFAULT_RETRY 4 |
#define | ADA_DEFAULT_SEND_ORDERED 1 |
#define | ADA_DEFAULT_SPINDOWN_SHUTDOWN 1 |
#define | ADA_DEFAULT_SPINDOWN_SUSPEND 1 |
#define | ADA_DEFAULT_READ_AHEAD 1 |
#define | ADA_DEFAULT_WRITE_CACHE 1 |
#define | ADA_RA |
#define | ADA_WC |
#define | ADA_ORDEREDTAG_INTERVAL 4 |
Functions | |
__FBSDID ("$FreeBSD$") | |
static void | adadiskgonecb (struct disk *dp) |
static void | adaasync (void *callback_arg, u_int32_t code, struct cam_path *path, void *arg) |
static int | adabitsysctl (SYSCTL_HANDLER_ARGS) |
static int | adaflagssysctl (SYSCTL_HANDLER_ARGS) |
static int | adazonesupsysctl (SYSCTL_HANDLER_ARGS) |
static void | adasysctlinit (void *context, int pending) |
static int | adagetattr (struct bio *bp) |
static void | adasetflags (struct ada_softc *softc, struct ccb_getdev *cgd) |
static void | adasetgeom (struct ada_softc *softc, struct ccb_getdev *cgd) |
static void | ada_dsmtrim (struct ada_softc *softc, struct bio *bp, struct ccb_ataio *ataio) |
static void | ada_cfaerase (struct ada_softc *softc, struct bio *bp, struct ccb_ataio *ataio) |
static int | ada_zone_bio_to_ata (int disk_zone_cmd) |
static int | ada_zone_cmd (struct cam_periph *periph, union ccb *ccb, struct bio *bp, int *queue_ccb) |
static void | adaprobedone (struct cam_periph *periph, union ccb *ccb) |
static void | adazonedone (struct cam_periph *periph, union ccb *ccb) |
static void | adadone (struct cam_periph *periph, union ccb *done_ccb) |
static int | adaerror (union ccb *ccb, u_int32_t cam_flags, u_int32_t sense_flags) |
static void | adashutdown (void *arg, int howto) |
static void | adasuspend (void *arg) |
static void | adaresume (void *arg) |
static | SYSCTL_NODE (_kern_cam, OID_AUTO, ada, CTLFLAG_RD|CTLFLAG_MPSAFE, 0, "CAM Direct Access Disk driver") |
SYSCTL_INT (_kern_cam_ada, OID_AUTO, retry_count, CTLFLAG_RWTUN, &ada_retry_count, 0, "Normal I/O retry count") | |
SYSCTL_INT (_kern_cam_ada, OID_AUTO, default_timeout, CTLFLAG_RWTUN, &ada_default_timeout, 0, "Normal I/O timeout (in seconds)") | |
SYSCTL_INT (_kern_cam_ada, OID_AUTO, send_ordered, CTLFLAG_RWTUN, &ada_send_ordered, 0, "Send Ordered Tags") | |
SYSCTL_INT (_kern_cam_ada, OID_AUTO, spindown_shutdown, CTLFLAG_RWTUN, &ada_spindown_shutdown, 0, "Spin down upon shutdown") | |
SYSCTL_INT (_kern_cam_ada, OID_AUTO, spindown_suspend, CTLFLAG_RWTUN, &ada_spindown_suspend, 0, "Spin down upon suspend") | |
SYSCTL_INT (_kern_cam_ada, OID_AUTO, read_ahead, CTLFLAG_RWTUN, &ada_read_ahead, 0, "Enable disk read-ahead") | |
SYSCTL_INT (_kern_cam_ada, OID_AUTO, write_cache, CTLFLAG_RWTUN, &ada_write_cache, 0, "Enable disk write cache") | |
SYSCTL_INT (_kern_cam_ada, OID_AUTO, enable_biospeedup, CTLFLAG_RDTUN, &ada_enable_biospeedup, 0, "Enable BIO_SPEEDUP processing") | |
SYSCTL_INT (_kern_cam_ada, OID_AUTO, enable_uma_ccbs, CTLFLAG_RWTUN, &ada_enable_uma_ccbs, 0, "Use UMA for CCBs") | |
static int | adadeletemethodsysctl (SYSCTL_HANDLER_ARGS) |
PERIPHDRIVER_DECLARE (ada, adadriver) | |
static | MALLOC_DEFINE (M_ATADA, "ata_da", "ata_da buffers") |
static int | adaopen (struct disk *dp) |
static int | adaclose (struct disk *dp) |
static void | adaschedule (struct cam_periph *periph) |
static void | adastrategy (struct bio *bp) |
static int | adadump (void *arg, void *virtual, vm_offset_t physical, off_t offset, size_t length) |
static void | adaoninvalidate (struct cam_periph *periph) |
static void | adacleanup (struct cam_periph *periph) |
static void | adasetdeletemethod (struct ada_softc *softc) |
static int | adazonemodesysctl (SYSCTL_HANDLER_ARGS) |
static cam_status | adaregister (struct cam_periph *periph, void *arg) |
static int | ada_dsmtrim_req_create (struct ada_softc *softc, struct bio *bp, struct trim_request *req) |
static void | ada_ncq_dsmtrim (struct ada_softc *softc, struct bio *bp, struct ccb_ataio *ataio) |
static void | adastart (struct cam_periph *periph, union ccb *start_ccb) |
static void | adasendorderedtag (void *arg) |
static void | adaflush (void) |
static void | adaspindown (uint8_t cmd, int flags) |
Variables | |
int | iosched_debug |
static struct ada_zone_desc | ada_zone_desc_table [] |
static const char * | ada_delete_method_names [] |
static uma_zone_t | ada_ccb_zone |
static struct ada_quirk_entry | ada_quirk_table [] |
static disk_strategy_t | adastrategy |
static dumper_t | adadump |
static periph_init_t | adainit |
static periph_oninv_t | adaoninvalidate |
static periph_dtor_t | adacleanup |
static periph_ctor_t | adaregister |
static periph_start_t | adastart |
static callout_func_t | adasendorderedtag |
static int | ada_retry_count = ADA_DEFAULT_RETRY |
static int | ada_default_timeout = ADA_DEFAULT_TIMEOUT |
static int | ada_send_ordered = ADA_DEFAULT_SEND_ORDERED |
static int | ada_spindown_shutdown = ADA_DEFAULT_SPINDOWN_SHUTDOWN |
static int | ada_spindown_suspend = ADA_DEFAULT_SPINDOWN_SUSPEND |
static int | ada_read_ahead = ADA_DEFAULT_READ_AHEAD |
static int | ada_write_cache = ADA_DEFAULT_WRITE_CACHE |
static int | ada_enable_biospeedup = 1 |
static int | ada_enable_uma_ccbs = 1 |
static struct periph_driver | adadriver |
#define ADA_FLAG_STRING |
#define ADA_Q_BIT_STRING |
#define ADA_RA |
#define ADA_WC |
#define ccb_bp ppriv_ptr1 |
#define ccb_state ppriv_field0 |
#define TRIM_MAX_RANGES (TRIM_MAX_BLOCKS * ATA_DSM_BLK_RANGES) |
enum ada_ccb_state |
enum ada_delete_methods |
enum ada_flags |
enum ada_quirks |
enum ada_state |
enum ada_zone_flags |
enum ada_zone_mode |
__FBSDID | ( | "$FreeBSD$" | ) |
|
static |
Definition at line 2095 of file ata_da.c.
References ada_default_timeout, ada_retry_count, adadone(), ata_28bit_cmd(), CAM_DIR_NONE, cam_fill_ataio(), ada_softc::params, disk_params::secsize, and ada_softc::trim_req.
Referenced by adastart().
|
static |
Definition at line 2052 of file ata_da.c.
References ada_default_timeout, ada_dsmtrim_req_create(), ada_retry_count, adadone(), ata_48bit_cmd(), CAM_DIR_OUT, cam_fill_ataio(), trim_request::data, and ada_softc::trim_req.
Referenced by adastart().
|
static |
Definition at line 1986 of file ata_da.c.
References ada_softc::cam_iosched, cam_iosched_next_trim(), cam_iosched_put_back_trim(), trim_request::data, ada_softc::params, disk_params::secsize, ada_softc::trim_count, ada_softc::trim_lbas, ada_softc::trim_max_ranges, and ada_softc::trim_ranges.
Referenced by ada_dsmtrim(), and ada_ncq_dsmtrim().
|
static |
Definition at line 2071 of file ata_da.c.
References ada_default_timeout, ada_dsmtrim_req_create(), ada_retry_count, adadone(), ATA_FLAG_AUX, ccb_ataio::ata_flags, ata_ncq_cmd(), ccb_ataio::aux, CAM_DIR_OUT, cam_fill_ataio(), ccb_ataio::cmd, trim_request::data, ata_cmd::sector_count_exp, and ada_softc::trim_req.
Referenced by adastart().
|
static |
Definition at line 2120 of file ata_da.c.
Referenced by ada_zone_cmd().
|
static |
Definition at line 2137 of file ata_da.c.
References ada_default_timeout, ADA_FLAG_PIM_ATA_EXT, ada_retry_count, ada_zone_bio_to_ata(), ADA_ZONE_DRIVE_MANAGED, ADA_ZONE_FLAG_CLOSE_SUP, ADA_ZONE_FLAG_FINISH_SUP, ADA_ZONE_FLAG_MAX_SEQ_SET, ADA_ZONE_FLAG_OPEN_SUP, ADA_ZONE_FLAG_OPT_NONSEQ_SET, ADA_ZONE_FLAG_OPT_SEQ_SET, ADA_ZONE_FLAG_RWP_SUP, ADA_ZONE_FLAG_RZ_SUP, ADA_ZONE_FLAG_URSWRZ, ADA_ZONE_HOST_AWARE, ADA_ZONE_HOST_MANAGED, ADA_ZONE_NONE, adadone(), ata_zac_mgmt_in(), ata_zac_mgmt_out(), ccb::ataio, ada_softc::disk, ada_softc::flags, ada_softc::max_seq_zones, ada_softc::optimal_nonseq_zones, ada_softc::optimal_seq_zones, cam_periph::path, cam_periph::softc, xpt_print(), ZBC_OUT_ALL, ada_softc::zone_flags, and ada_softc::zone_mode.
Referenced by adastart().
|
static |
Definition at line 1298 of file ata_da.c.
References AC_ADVINFO_CHANGED, AC_BUS_RESET, AC_FOUND_DEVICE, AC_GETDEV_CHANGED, AC_SENT_BDR, ADA_FLAG_CAN_LOG, ADA_FLAG_CAN_RAHEAD, ADA_FLAG_CAN_WCACHE, ADA_RA, ADA_STATE_LOGDIR, ADA_STATE_NORMAL, ADA_STATE_RAHEAD, ADA_STATE_WCACHE, ADA_WC, ADA_ZONE_NONE, adaasync(), adacleanup, adaoninvalidate, adaregister, adasetflags(), adasetgeom(), adastart, cam_periph_acquire(), cam_periph_alloc(), cam_periph_async(), CAM_PERIPH_BIO, CAM_PRIORITY_DEV, CAM_PRIORITY_NORMAL, CAM_REQ_CMP, CAM_REQ_INPROG, ccb_getdev::ccb_h, CDAI_TYPE_PHYS_PATH, ada_softc::disk, ada_softc::flags, ccb_hdr::func_code, cam_periph::path, PROTO_ATA, ccb_getdev::protocol, cam_periph::softc, ada_softc::state, xpt_action(), XPT_GDEV_TYPE, xpt_schedule(), xpt_setup_ccb(), and ada_softc::zone_mode.
Referenced by adaasync(), adaoninvalidate(), and adaregister().
|
static |
Definition at line 1663 of file ata_da.c.
References ada_softc::flags.
Referenced by adasysctlinit().
|
static |
Definition at line 1253 of file ata_da.c.
References ADA_FLAG_SCTX_INIT, ada_softc::cam_iosched, cam_iosched_fini(), cam_periph_lock, cam_periph_unlock, ada_softc::disk, ada_softc::flags, cam_periph::path, ada_softc::sendordered_c, cam_periph::softc, ada_softc::sysctl_ctx, and xpt_print().
|
static |
Definition at line 989 of file ata_da.c.
References ada_default_timeout, ADA_FLAG_CAN_48BIT, ADA_FLAG_CAN_FLUSHCACHE, ADA_FLAG_DIRTY, adaerror(), ata_28bit_cmd(), ata_48bit_cmd(), ccb::ataio, CAM_DEBUG, CAM_DEBUG_PERIPH, CAM_DEBUG_TRACE, CAM_DIR_NONE, cam_fill_ataio(), cam_periph_getccb(), cam_periph_hold(), CAM_PERIPH_INVALID, cam_periph_lock, cam_periph_release(), cam_periph_runccb(), cam_periph_sleep, cam_periph_unhold(), cam_periph_unlock, CAM_PRIORITY_NORMAL, ccb, cam_periph::flags, cam_periph::path, cam_periph::softc, xpt_print(), and xpt_release_ccb().
Referenced by adaregister().
|
static |
Definition at line 1626 of file ata_da.c.
References ADA_DELETE_CFA_ERASE, ADA_DELETE_DISABLE, ADA_DELETE_DSM_TRIM, ADA_DELETE_MAX, ada_delete_method_names, ADA_DELETE_NCQ_DSM_TRIM, ADA_FLAG_CAN_48BIT, ADA_FLAG_CAN_CFA, ADA_FLAG_CAN_NCQ_TRIM, ADA_FLAG_CAN_TRIM, ada_softc::delete_method, and ada_softc::flags.
Referenced by adasysctlinit().
|
static |
Definition at line 1218 of file ata_da.c.
References cam_periph_release().
Referenced by adaregister().
|
static |
Definition at line 2850 of file ata_da.c.
References ADA_CCB_BUFFER_IO, ADA_CCB_DUMP, ADA_CCB_IDDIR, ADA_CCB_LOGDIR, ADA_CCB_RAHEAD, ADA_CCB_SUP_CAP, ADA_CCB_TRIM, ADA_CCB_TYPE_MASK, ADA_CCB_WCACHE, ADA_CCB_ZONE, ADA_FLAG_CAN_IDLOG, ADA_FLAG_CAN_LOG, ADA_FLAG_CAN_NCQ_TRIM, ADA_FLAG_CAN_SUPCAP, ADA_FLAG_CAN_ZONE, ADA_FLAG_WAS_OTAG, ADA_STATE_IDDIR, ADA_STATE_LOGDIR, ADA_STATE_SUP_CAP, ADA_STATE_WCACHE, ADA_STATE_ZONE, ADA_ZONE_DRIVE_MANAGED, ADA_ZONE_FLAG_CLOSE_SUP, ADA_ZONE_FLAG_FINISH_SUP, ADA_ZONE_FLAG_MAX_SEQ_SET, ADA_ZONE_FLAG_OPEN_SUP, ADA_ZONE_FLAG_OPT_NONSEQ_SET, ADA_ZONE_FLAG_OPT_SEQ_SET, ADA_ZONE_FLAG_RWP_SUP, ADA_ZONE_FLAG_RZ_SUP, ADA_ZONE_FLAG_SUP_MASK, ADA_ZONE_FLAG_URSWRZ, ADA_ZONE_HOST_AWARE, ADA_ZONE_NONE, adaerror(), adaprobedone(), adaschedule(), adasetdeletemethod(), adazonedone(), ada_softc::ata_iddir, ada_softc::ata_logdir, ccb::ataio, CAM_DEBUG, CAM_DEBUG_TRACE, CAM_DEV_QFRZN, ada_softc::cam_iosched, cam_iosched_bio_complete(), cam_iosched_trim_done(), cam_periph_lock, cam_periph_unlock, cam_release_devq(), CAM_REQ_CMP, CAM_RETRY_SELTO, CAM_STATUS_MASK, ccb_ataio::ccb_h, ccb::ccb_h, ccb_ataio::data_ptr, ccb_ataio::dxfer_len, ada_softc::flags, ada_softc::max_seq_zones, ada_softc::optimal_nonseq_zones, ada_softc::optimal_seq_zones, ada_softc::outstanding_cmds, ccb_hdr::path, ccb_hdr::pinfo, cam_pinfo::priority, ada_softc::refcount, ccb_ataio::resid, SF_NO_PRINT, SF_RETRY_UA, cam_periph::softc, ada_softc::state, ccb_hdr::status, TAILQ_HEAD(), ada_softc::trim_req, ada_softc::valid_iddir_len, ada_softc::valid_logdir_len, xpt_release_ccb(), xpt_schedule(), ada_softc::zone_flags, and ada_softc::zone_mode.
Referenced by ada_cfaerase(), ada_dsmtrim(), ada_ncq_dsmtrim(), ada_zone_cmd(), and adastart().
|
static |
Definition at line 1102 of file ata_da.c.
References ADA_CCB_DUMP, ada_default_timeout, ADA_FLAG_CAN_48BIT, ADA_FLAG_CAN_FLUSHCACHE, adaerror(), ata_28bit_cmd(), ata_48bit_cmd(), ATA_MAX_28BIT_LBA, CAM_DIR_NONE, CAM_DIR_OUT, cam_fill_ataio(), CAM_PERIPH_INVALID, cam_periph_runccb(), CAM_PRIORITY_NORMAL, ccb_ataio::ccb_h, ada_softc::flags, cam_periph::flags, ada_softc::params, cam_periph::path, disk_params::secsize, SF_NO_RECOVERY, SF_NO_RETRY, cam_periph::softc, xpt_print(), and xpt_setup_ccb().
|
static |
Definition at line 3391 of file ata_da.c.
References CAM_ATA_STATUS_ERROR, CAM_CMD_TIMEOUT, CAM_DATA_RUN_ERR, cam_periph_error(), CAM_REQ_ABORTED, CAM_REQ_CMP_ERR, CAM_REQ_TERMIO, CAM_STATUS_MASK, CAM_UNREC_HBA_ERROR, ccb::ccb_h, ccb_hdr::path, cam_periph::softc, ccb_hdr::status, and xpt_path_periph().
Referenced by adaclose(), adadone(), adadump(), adaflush(), and adaspindown().
|
static |
Definition at line 1678 of file ata_da.c.
References ADA_FLAG_STRING, and ada_softc::flags.
Referenced by adasysctlinit().
|
static |
Definition at line 3556 of file ata_da.c.
References ada_default_timeout, ADA_FLAG_CAN_48BIT, ADA_FLAG_CAN_FLUSHCACHE, ADA_FLAG_OPEN, adadriver, adadump, adaerror(), ata_28bit_cmd(), ata_48bit_cmd(), ccb::ataio, CAM_DIR_NONE, cam_fill_ataio(), CAM_PERIPH_FOREACH, cam_periph_getccb(), cam_periph_lock, cam_periph_owned, cam_periph_runccb(), cam_periph_unlock, CAM_PRIORITY_NORMAL, ccb, ada_softc::disk, ada_softc::flags, cam_periph::path, SF_NO_RECOVERY, SF_NO_RETRY, cam_periph::softc, xpt_print(), and xpt_release_ccb().
Referenced by adashutdown(), and adasuspend().
|
static |
Definition at line 1607 of file ata_da.c.
References ada_enable_biospeedup, cam_periph_lock, cam_periph_unlock, cam_periph::path, and xpt_getattr().
Referenced by adaregister().
|
static |
Definition at line 1228 of file ata_da.c.
References adaasync(), ada_softc::cam_iosched, cam_iosched_flush(), ada_softc::disk, cam_periph::path, cam_periph::softc, and xpt_register_async().
|
static |
Definition at line 959 of file ata_da.c.
References ADA_FLAG_OPEN, CAM_DEBUG, CAM_DEBUG_PERIPH, CAM_DEBUG_TRACE, cam_periph_acquire(), cam_periph_hold(), cam_periph_lock, cam_periph_release(), cam_periph_unhold(), cam_periph_unlock, ada_softc::flags, cam_periph::path, and cam_periph::softc.
Referenced by adaregister().
|
static |
Definition at line 2689 of file ata_da.c.
References ADA_FLAG_ANNOUNCED, ADA_FLAG_PROBED, ADA_STATE_NORMAL, adaschedule(), cam_periph_release_locked(), cam_periph_unhold(), ada_softc::flags, cam_periph::softc, ada_softc::state, and xpt_release_ccb().
Referenced by adadone(), adaregister(), and adastart().
|
static |
Definition at line 1796 of file ata_da.c.
References AC_ADVINFO_CHANGED, AC_BUS_RESET, AC_GETDEV_CHANGED, AC_LOST_DEVICE, AC_SENT_BDR, ADA_ANNOUNCE_SZ, ADA_ANNOUNCETMP_SZ, ada_ccb_zone, ada_default_timeout, ada_enable_uma_ccbs, ADA_FLAG_CAN_LOG, ADA_FLAG_CAN_RAHEAD, ADA_FLAG_CAN_WCACHE, ADA_FLAG_PIM_ATA_EXT, ADA_FLAG_ROTATING, ADA_ORDEREDTAG_INTERVAL, ADA_Q_BIT_STRING, ADA_Q_NONE, ada_quirk_table, ADA_RA, ADA_STATE_LOGDIR, ADA_STATE_RAHEAD, ADA_STATE_WCACHE, ADA_WC, ADA_ZONE_NONE, adaasync(), adaclose(), adadiskgonecb(), adadump, adagetattr(), adaopen(), adaprobedone(), adasendorderedtag, adasetflags(), adasetgeom(), adastrategy, adasysctlinit(), ada_softc::announce_buffer, ada_softc::announce_temp, ata_identify_match(), ada_softc::cam_iosched, cam_iosched_init(), cam_iosched_set_sort_queue(), cam_periph_acquire(), cam_periph_hold(), cam_periph_lock, cam_periph_mtx(), cam_periph_unlock, CAM_PRIORITY_DEV, cam_quirkmatch(), CAM_REQ_CMP, CAM_REQ_CMP_ERR, cam_sim_pollable(), cam_periph::ccb_zone, ada_softc::cpi, ada_softc::disk, ada_softc::flags, ccb_pathinq::hba_misc, ccb_getdev::ident_data, ada_softc::params, cam_periph::path, cam_periph::periph_name, PIM_ATA_EXT, ada_softc::quirks, ada_quirk_entry::quirks, ada_softc::read_ahead, disk_params::secsize, disk_params::sectors, ada_softc::sendordered_c, cam_periph::sim, cam_periph::softc, ada_softc::state, ada_softc::sysctl_task, ccb_pathinq::transport, cam_periph::unit_number, ada_softc::write_cache, XPORT_DEVSTAT_TYPE, xpt_announce_periph_sbuf(), xpt_announce_quirks_sbuf(), xpt_path_inq(), xpt_print(), xpt_register_async(), xpt_schedule(), and ada_softc::zone_mode.
|
static |
Definition at line 3744 of file ata_da.c.
References ADA_FLAG_CAN_POWERMGT, ada_spindown_suspend, adadriver, CAM_PERIPH_FOREACH, cam_periph_lock, cam_periph_unlock, cam_release_devq(), ada_softc::flags, cam_periph::path, cam_periph::softc, and xpt_print().
|
static |
Definition at line 1042 of file ata_da.c.
References ADA_STATE_NORMAL, ada_softc::cam_iosched, cam_iosched_schedule(), cam_periph::softc, and ada_softc::state.
Referenced by adadone(), adaprobedone(), adastart(), and adastrategy().
|
static |
Definition at line 3533 of file ata_da.c.
References ada_default_timeout, ADA_FLAG_NEED_OTAG, ADA_FLAG_WAS_OTAG, ADA_ORDEREDTAG_INTERVAL, ada_send_ordered, ada_softc::flags, ada_softc::outstanding_cmds, and ada_softc::sendordered_c.
|
static |
Definition at line 1284 of file ata_da.c.
References ADA_DELETE_CFA_ERASE, ADA_DELETE_DSM_TRIM, ADA_DELETE_NCQ_DSM_TRIM, ADA_DELETE_NONE, ADA_FLAG_CAN_48BIT, ADA_FLAG_CAN_CFA, ADA_FLAG_CAN_NCQ_TRIM, ADA_FLAG_CAN_TRIM, ada_softc::delete_method, and ada_softc::flags.
Referenced by adadone(), and adasetflags().
|
static |
Definition at line 1696 of file ata_da.c.
References ADA_FLAG_CAN_48BIT, ADA_FLAG_CAN_CFA, ADA_FLAG_CAN_DMA, ADA_FLAG_CAN_DMA48, ADA_FLAG_CAN_FLUSHCACHE, ADA_FLAG_CAN_LOG, ADA_FLAG_CAN_NCQ, ADA_FLAG_CAN_NCQ_TRIM, ADA_FLAG_CAN_POWERMGT, ADA_FLAG_CAN_RAHEAD, ADA_FLAG_CAN_TRIM, ADA_FLAG_CAN_WCACHE, ADA_FLAG_PIM_ATA_EXT, ADA_Q_LOG_BROKEN, ADA_Q_NCQ_TRIM_BROKEN, ADA_Q_NO_TRIM, ADA_Q_SMR_DM, ADA_ZONE_DRIVE_MANAGED, ADA_ZONE_HOST_AWARE, ADA_ZONE_NONE, adasetdeletemethod(), ada_softc::flags, ccb_getdev::ident_data, ccb_getdev::inq_flags, ada_softc::quirks, SID_CmdQue, SID_DMA, SID_DMA48, TRIM_MAX_RANGES, ada_softc::trim_max_ranges, and ada_softc::zone_mode.
Referenced by adaasync(), and adaregister().
|
static |
Definition at line 3421 of file ata_da.c.
References ADA_FLAG_CAN_48BIT, ADA_FLAG_CAN_CFA, ADA_FLAG_CAN_FLUSHCACHE, ADA_FLAG_CAN_TRIM, ADA_FLAG_UNMAPPEDIO, ADA_Q_128KB, ADA_Q_4K, ata_logical_sector_offset(), ata_logical_sector_size(), ATA_MAX_28BIT_LBA, ata_physical_sector_size(), ada_softc::cpi, disk_params::cylinders, ccb_pathinq::dev_name, ada_softc::disk, ada_softc::flags, ccb_pathinq::hba_misc, disk_params::heads, ccb_getdev::ident_data, ccb_pathinq::maxio, ada_softc::params, PIM_UNMAPPED, ada_softc::quirks, disk_params::secs_per_track, disk_params::secsize, disk_params::sectors, ada_softc::trim_max_ranges, and ccb_pathinq::unit_number.
Referenced by adaasync(), and adaregister().
|
static |
Definition at line 3703 of file ata_da.c.
References ada_spindown_shutdown, adaflush(), and adaspindown().
|
static |
Definition at line 3609 of file ata_da.c.
References ADA_CCB_DUMP, ada_default_timeout, ADA_FLAG_CAN_POWERMGT, adadriver, adaerror(), ata_28bit_cmd(), CAM_ATAIO_NEEDRESULT, CAM_DIR_NONE, cam_fill_ataio(), CAM_PERIPH_FOREACH, cam_periph_lock, cam_periph_owned, cam_periph_runccb(), cam_periph_unlock, CAM_PRIORITY_NORMAL, ccb_ataio::ccb_h, ccb_ataio::cmd, ada_softc::disk, ata_cmd::flags, ada_softc::flags, cam_periph::path, SF_NO_RECOVERY, SF_NO_RETRY, cam_periph::softc, xpt_print(), and xpt_setup_ccb().
Referenced by adashutdown(), and adasuspend().
|
static |
Definition at line 2323 of file ata_da.c.
References ADA_CCB_BUFFER_IO, ADA_CCB_IDDIR, ADA_CCB_LOGDIR, ADA_CCB_RAHEAD, ADA_CCB_SUP_CAP, ADA_CCB_TRIM, ADA_CCB_WCACHE, ADA_CCB_ZONE, ada_cfaerase(), ada_default_timeout, ADA_DELETE_CFA_ERASE, ADA_DELETE_DSM_TRIM, ADA_DELETE_NCQ_DSM_TRIM, ada_dsmtrim(), ADA_FLAG_CAN_48BIT, ADA_FLAG_CAN_DMA, ADA_FLAG_CAN_DMA48, ADA_FLAG_CAN_LOG, ADA_FLAG_CAN_NCQ, ADA_FLAG_DIRTY, ADA_FLAG_NEED_OTAG, ADA_FLAG_WAS_OTAG, ada_ncq_dsmtrim(), ADA_RA, ada_retry_count, ADA_STATE_IDDIR, ADA_STATE_LOGDIR, ADA_STATE_NORMAL, ADA_STATE_RAHEAD, ADA_STATE_SUP_CAP, ADA_STATE_WCACHE, ADA_STATE_ZONE, ADA_WC, ada_zone_cmd(), adadone(), adaprobedone(), adaschedule(), ata_28bit_cmd(), ata_48bit_cmd(), ATA_MAX_28BIT_LBA, ata_ncq_cmd(), ata_read_log(), ccb::ataio, CAM_ATAIO_DMA, CAM_DATA_BIO, CAM_DEBUG, CAM_DEBUG_TRACE, CAM_DEV_QFREEZE, CAM_DIR_IN, CAM_DIR_NONE, CAM_DIR_OUT, cam_fill_ataio(), ada_softc::cam_iosched, cam_iosched_next_bio(), cam_iosched_submit_trim(), cam_periph_lock, cam_periph_unlock, CAM_UNLOCKED, ccb::ccb_h, ada_softc::delete_method, ada_softc::flags, ccb_hdr::flags, ada_softc::outstanding_cmds, ada_softc::params, cam_periph::path, ada_softc::refcount, disk_params::secsize, cam_periph::softc, ada_softc::state, xpt_action(), xpt_print(), and xpt_release_ccb().
|
static |
Definition at line 1058 of file ata_da.c.
References adaschedule(), CAM_DEBUG, CAM_DEBUG_TRACE, cam_iosched_queue_work(), CAM_PERIPH_INVALID, cam_periph_lock, cam_periph_unlock, cam_periph::flags, cam_periph::path, and cam_periph::softc.
|
static |
Definition at line 3731 of file ata_da.c.
References ada_spindown_suspend, adaflush(), adaspindown(), and CAM_DEV_QFREEZE.
|
static |
Definition at line 1466 of file ata_da.c.
References ADA_FLAG_ROTATING, ADA_FLAG_SCTX_INIT, ADA_FLAG_UNMAPPEDIO, adabitsysctl(), adadeletemethodsysctl(), adaflagssysctl(), adazonemodesysctl(), adazonesupsysctl(), ada_softc::cam_iosched, cam_iosched_sysctl_init(), CAM_PERIPH_INVALID, cam_periph_invalidate_sysctl(), cam_periph_release(), ada_softc::flags, cam_periph::flags, ada_softc::max_seq_zones, ada_softc::optimal_nonseq_zones, ada_softc::optimal_seq_zones, ada_softc::read_ahead, cam_periph::softc, ada_softc::sysctl_ctx, ada_softc::sysctl_tree, ada_softc::trim_count, ada_softc::trim_lbas, ada_softc::trim_ranges, cam_periph::unit_number, and ada_softc::write_cache.
Referenced by adaregister().
|
static |
Definition at line 2710 of file ata_da.c.
References ccb::ataio, scsi_report_zones_hdr::byte4, ccb::ccb_h, ccb_ataio::data_ptr, scsi_report_zones_hdr::desc_list, ccb_ataio::dxfer_len, scsi_report_zones_hdr::length, scsi_report_zones_hdr::maximum_lba, ccb_ataio::resid, SRZ_SAME_MASK, SRZ_TYPE_MASK, SRZ_ZONE_COND_MASK, SRZ_ZONE_COND_SHIFT, SRZ_ZONE_NON_SEQ, SRZ_ZONE_RESET, scsi_report_zones_desc::write_pointer_lba, scsi_report_zones_desc::zone_flags, scsi_report_zones_desc::zone_length, scsi_report_zones_desc::zone_start_lba, and scsi_report_zones_desc::zone_type.
Referenced by adadone().
|
static |
Definition at line 1400 of file ata_da.c.
References ADA_ZONE_DRIVE_MANAGED, ADA_ZONE_HOST_AWARE, ADA_ZONE_HOST_MANAGED, ADA_ZONE_NONE, and ada_softc::zone_mode.
Referenced by adasysctlinit().
|
static |
Definition at line 1430 of file ata_da.c.
References ada_zone_desc_table, ada_zone_desc::value, and ada_softc::zone_flags.
Referenced by adasysctlinit().
|
static |
PERIPHDRIVER_DECLARE | ( | ada | , |
adadriver | |||
) |
SYSCTL_INT | ( | _kern_cam_ada | , |
OID_AUTO | , | ||
default_timeout | , | ||
CTLFLAG_RWTUN | , | ||
& | ada_default_timeout, | ||
0 | , | ||
"Normal I/O timeout (in seconds)" | |||
) |
SYSCTL_INT | ( | _kern_cam_ada | , |
OID_AUTO | , | ||
enable_biospeedup | , | ||
CTLFLAG_RDTUN | , | ||
& | ada_enable_biospeedup, | ||
0 | , | ||
"Enable BIO_SPEEDUP processing" | |||
) |
SYSCTL_INT | ( | _kern_cam_ada | , |
OID_AUTO | , | ||
enable_uma_ccbs | , | ||
CTLFLAG_RWTUN | , | ||
& | ada_enable_uma_ccbs, | ||
0 | , | ||
"Use UMA for CCBs" | |||
) |
SYSCTL_INT | ( | _kern_cam_ada | , |
OID_AUTO | , | ||
read_ahead | , | ||
CTLFLAG_RWTUN | , | ||
& | ada_read_ahead, | ||
0 | , | ||
"Enable disk read-ahead" | |||
) |
SYSCTL_INT | ( | _kern_cam_ada | , |
OID_AUTO | , | ||
retry_count | , | ||
CTLFLAG_RWTUN | , | ||
& | ada_retry_count, | ||
0 | , | ||
"Normal I/O retry count" | |||
) |
SYSCTL_INT | ( | _kern_cam_ada | , |
OID_AUTO | , | ||
send_ordered | , | ||
CTLFLAG_RWTUN | , | ||
& | ada_send_ordered, | ||
0 | , | ||
"Send Ordered Tags" | |||
) |
SYSCTL_INT | ( | _kern_cam_ada | , |
OID_AUTO | , | ||
spindown_shutdown | , | ||
CTLFLAG_RWTUN | , | ||
& | ada_spindown_shutdown, | ||
0 | , | ||
"Spin down upon shutdown" | |||
) |
SYSCTL_INT | ( | _kern_cam_ada | , |
OID_AUTO | , | ||
spindown_suspend | , | ||
CTLFLAG_RWTUN | , | ||
& | ada_spindown_suspend, | ||
0 | , | ||
"Spin down upon suspend" | |||
) |
SYSCTL_INT | ( | _kern_cam_ada | , |
OID_AUTO | , | ||
write_cache | , | ||
CTLFLAG_RWTUN | , | ||
& | ada_write_cache, | ||
0 | , | ||
"Enable disk write cache" | |||
) |
|
static |
|
static |
Definition at line 300 of file ata_da.c.
Referenced by adaregister().
|
static |
Definition at line 900 of file ata_da.c.
Referenced by ada_cfaerase(), ada_dsmtrim(), ada_ncq_dsmtrim(), ada_zone_cmd(), adaclose(), adadump(), adaflush(), adaregister(), adasendorderedtag(), adaspindown(), and adastart().
|
static |
Definition at line 228 of file ata_da.c.
Referenced by adadeletemethodsysctl().
|
static |
Definition at line 906 of file ata_da.c.
Referenced by adagetattr().
|
static |
Definition at line 907 of file ata_da.c.
Referenced by adaregister().
|
static |
Definition at line 307 of file ata_da.c.
Referenced by adaregister().
|
static |
|
static |
Definition at line 899 of file ata_da.c.
Referenced by ada_cfaerase(), ada_dsmtrim(), ada_ncq_dsmtrim(), ada_zone_cmd(), and adastart().
|
static |
Definition at line 901 of file ata_da.c.
Referenced by adasendorderedtag().
|
static |
Definition at line 902 of file ata_da.c.
Referenced by adashutdown().
|
static |
Definition at line 903 of file ata_da.c.
Referenced by adaresume(), and adasuspend().
|
static |
|
static |
Referenced by adazonesupsysctl().
|
static |
Definition at line 834 of file ata_da.c.
Referenced by adaasync().
|
static |
Definition at line 946 of file ata_da.c.
Referenced by adaflush(), adaresume(), and adaspindown().
|
static |
Definition at line 830 of file ata_da.c.
Referenced by adaflush(), and adaregister().
|
static |
Definition at line 833 of file ata_da.c.
Referenced by adaasync().
|
static |
Definition at line 846 of file ata_da.c.
Referenced by adaasync().
|
static |
Definition at line 861 of file ata_da.c.
Referenced by adaregister().
|
static |
Definition at line 854 of file ata_da.c.
Referenced by adaasync().
|
static |
Definition at line 829 of file ata_da.c.
Referenced by adaregister().
|
extern |