Page MenuHomeFreeBSD

D18493.1775333041.diff
No OneTemporary

Size
1 KB
Referenced Files
None
Subscribers
None

D18493.1775333041.diff

Index: head/sys/cam/nvme/nvme_da.c
===================================================================
--- head/sys/cam/nvme/nvme_da.c
+++ head/sys/cam/nvme/nvme_da.c
@@ -798,7 +798,7 @@
disk->d_mediasize = (off_t)(disk->d_sectorsize * nsd->nsze);
disk->d_delmaxsize = disk->d_mediasize;
disk->d_flags = DISKFLAG_DIRECT_COMPLETION;
-// if (cd->oncs.dsm) // XXX broken?
+ if (nvme_ctrlr_has_dataset_mgmt(cd))
disk->d_flags |= DISKFLAG_CANDELETE;
vwc_present = (cd->vwc >> NVME_CTRLR_DATA_VWC_PRESENT_SHIFT) &
NVME_CTRLR_DATA_VWC_PRESENT_MASK;
Index: head/sys/dev/nvme/nvme.h
===================================================================
--- head/sys/dev/nvme/nvme.h
+++ head/sys/dev/nvme/nvme.h
@@ -1259,6 +1259,13 @@
device_t nvme_ctrlr_get_device(struct nvme_controller *ctrlr);
const struct nvme_controller_data *
nvme_ctrlr_get_data(struct nvme_controller *ctrlr);
+static inline bool
+nvme_ctrlr_has_dataset_mgmt(const struct nvme_controller_data *cd)
+{
+ /* Assumes cd was byte swapped by nvme_controller_data_swapbytes() */
+ return ((cd->oncs >> NVME_CTRLR_DATA_ONCS_DSM_SHIFT) &
+ NVME_CTRLR_DATA_ONCS_DSM_MASK);
+}
/* Namespace helper functions */
uint32_t nvme_ns_get_max_io_xfer_size(struct nvme_namespace *ns);
Index: head/sys/dev/nvme/nvme_ns.c
===================================================================
--- head/sys/dev/nvme/nvme_ns.c
+++ head/sys/dev/nvme/nvme_ns.c
@@ -498,8 +498,6 @@
struct nvme_completion_poll_status status;
int res;
int unit;
- uint16_t oncs;
- uint8_t dsm;
uint8_t flbas_fmt;
uint8_t vwc_present;
@@ -569,9 +567,7 @@
return (ENXIO);
}
- oncs = ctrlr->cdata.oncs;
- dsm = (oncs >> NVME_CTRLR_DATA_ONCS_DSM_SHIFT) & NVME_CTRLR_DATA_ONCS_DSM_MASK;
- if (dsm)
+ if (nvme_ctrlr_has_dataset_mgmt(&ctrlr->cdata))
ns->flags |= NVME_NS_DEALLOCATE_SUPPORTED;
vwc_present = (ctrlr->cdata.vwc >> NVME_CTRLR_DATA_VWC_PRESENT_SHIFT) &

File Metadata

Mime Type
text/plain
Expires
Sat, Apr 4, 8:04 PM (17 h, 5 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
28261160
Default Alt Text
D18493.1775333041.diff (1 KB)

Event Timeline