mirror of
https://git.FreeBSD.org/src.git
synced 2025-01-15 15:06:42 +00:00
Closer examination shows that nvme and CAM both normally zero-fill
allocations (for req and ccb, which ultimately contain the nvme_cmd). As such, we can micro-optimize these routines. Add a comment to this effect, and bzero the ccb used to make the requests for the nda dump rotuine so it more closely matches a ccb allocated with xpt_get_ccb(). Sponsored by: Netflix
This commit is contained in:
parent
57ef3db3a9
commit
fa271a5d09
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=324644
@ -398,6 +398,8 @@ ndadump(void *arg, void *virtual, vm_offset_t physical, off_t offset, size_t len
|
||||
return (ENXIO);
|
||||
}
|
||||
|
||||
/* xpt_get_ccb returns a zero'd allocation for the ccb, mimic that here */
|
||||
memset(&nvmeio, 0, sizeof(nvmeio));
|
||||
if (length > 0) {
|
||||
xpt_setup_ccb(&nvmeio.ccb_h, periph->path, CAM_PRIORITY_NORMAL);
|
||||
nvmeio.ccb_h.ccb_state = NDA_CCB_DUMP;
|
||||
|
@ -1068,7 +1068,12 @@ uint32_t nvme_ns_get_stripesize(struct nvme_namespace *ns);
|
||||
int nvme_ns_bio_process(struct nvme_namespace *ns, struct bio *bp,
|
||||
nvme_cb_fn_t cb_fn);
|
||||
|
||||
/* Command building helper functions -- shared with CAM */
|
||||
/*
|
||||
* Command building helper functions -- shared with CAM
|
||||
* These functions assume allocator zeros out cmd structure
|
||||
* CAM's xpt_get_ccb and the request allocator for nvme both
|
||||
* do zero'd allocations.
|
||||
*/
|
||||
static inline
|
||||
void nvme_ns_flush_cmd(struct nvme_command *cmd, uint32_t nsid)
|
||||
{
|
||||
@ -1082,17 +1087,10 @@ void nvme_ns_rw_cmd(struct nvme_command *cmd, uint32_t rwcmd, uint32_t nsid,
|
||||
uint64_t lba, uint32_t count)
|
||||
{
|
||||
cmd->opc = rwcmd;
|
||||
cmd->fuse = 0;
|
||||
cmd->rsvd1 = 0;
|
||||
cmd->nsid = nsid;
|
||||
cmd->rsvd2 = 0;
|
||||
cmd->rsvd3 = 0;
|
||||
cmd->cdw10 = lba & 0xffffffffu;
|
||||
cmd->cdw11 = lba >> 32;
|
||||
cmd->cdw12 = count-1;
|
||||
cmd->cdw13 = 0;
|
||||
cmd->cdw14 = 0;
|
||||
cmd->cdw15 = 0;
|
||||
}
|
||||
|
||||
static inline
|
||||
|
Loading…
Reference in New Issue
Block a user