svn commit: r328703 - in stable/11/sys: cam/nvme dev/nvme
Alexander Motin
mav at FreeBSD.org
Thu Feb 1 19:07:22 UTC 2018
Author: mav
Date: Thu Feb 1 19:07:21 2018
New Revision: 328703
URL: https://svnweb.freebsd.org/changeset/base/328703
Log:
MFC r324644 (by imp):
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().
Modified:
stable/11/sys/cam/nvme/nvme_da.c
stable/11/sys/dev/nvme/nvme.h
Directory Properties:
stable/11/ (props changed)
Modified: stable/11/sys/cam/nvme/nvme_da.c
==============================================================================
--- stable/11/sys/cam/nvme/nvme_da.c Thu Feb 1 19:06:42 2018 (r328702)
+++ stable/11/sys/cam/nvme/nvme_da.c Thu Feb 1 19:07:21 2018 (r328703)
@@ -398,6 +398,8 @@ ndadump(void *arg, void *virtual, vm_offset_t physical
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(&ccb.ccb_h, periph->path, CAM_PRIORITY_NORMAL);
ccb.ccb_h.ccb_state = NDA_CCB_DUMP;
Modified: stable/11/sys/dev/nvme/nvme.h
==============================================================================
--- stable/11/sys/dev/nvme/nvme.h Thu Feb 1 19:06:42 2018 (r328702)
+++ stable/11/sys/dev/nvme/nvme.h Thu Feb 1 19:07:21 2018 (r328703)
@@ -1068,7 +1068,12 @@ uint32_t nvme_ns_get_stripesize(struct nvme_namespace
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
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
More information about the svn-src-all
mailing list