diff options
-rw-r--r-- | drivers/block/nvme-core.c | 3 | ||||
-rw-r--r-- | include/linux/nvme.h | 1 | ||||
-rw-r--r-- | include/uapi/linux/nvme.h | 1 |
3 files changed, 5 insertions, 0 deletions
diff --git a/drivers/block/nvme-core.c b/drivers/block/nvme-core.c index 025dd4cad4a6..e7c4fdb6a651 100644 --- a/drivers/block/nvme-core.c +++ b/drivers/block/nvme-core.c | |||
@@ -1897,6 +1897,8 @@ static struct nvme_ns *nvme_alloc_ns(struct nvme_dev *dev, unsigned nsid, | |||
1897 | blk_queue_logical_block_size(ns->queue, 1 << ns->lba_shift); | 1897 | blk_queue_logical_block_size(ns->queue, 1 << ns->lba_shift); |
1898 | if (dev->max_hw_sectors) | 1898 | if (dev->max_hw_sectors) |
1899 | blk_queue_max_hw_sectors(ns->queue, dev->max_hw_sectors); | 1899 | blk_queue_max_hw_sectors(ns->queue, dev->max_hw_sectors); |
1900 | if (dev->vwc & NVME_CTRL_VWC_PRESENT) | ||
1901 | blk_queue_flush(ns->queue, REQ_FLUSH | REQ_FUA); | ||
1900 | 1902 | ||
1901 | disk->major = nvme_major; | 1903 | disk->major = nvme_major; |
1902 | disk->first_minor = 0; | 1904 | disk->first_minor = 0; |
@@ -2201,6 +2203,7 @@ static int nvme_dev_add(struct nvme_dev *dev) | |||
2201 | nn = le32_to_cpup(&ctrl->nn); | 2203 | nn = le32_to_cpup(&ctrl->nn); |
2202 | dev->oncs = le16_to_cpup(&ctrl->oncs); | 2204 | dev->oncs = le16_to_cpup(&ctrl->oncs); |
2203 | dev->abort_limit = ctrl->acl + 1; | 2205 | dev->abort_limit = ctrl->acl + 1; |
2206 | dev->vwc = ctrl->vwc; | ||
2204 | memcpy(dev->serial, ctrl->sn, sizeof(ctrl->sn)); | 2207 | memcpy(dev->serial, ctrl->sn, sizeof(ctrl->sn)); |
2205 | memcpy(dev->model, ctrl->mn, sizeof(ctrl->mn)); | 2208 | memcpy(dev->model, ctrl->mn, sizeof(ctrl->mn)); |
2206 | memcpy(dev->firmware_rev, ctrl->fr, sizeof(ctrl->fr)); | 2209 | memcpy(dev->firmware_rev, ctrl->fr, sizeof(ctrl->fr)); |
diff --git a/include/linux/nvme.h b/include/linux/nvme.h index cfd084cab22b..6266373d3147 100644 --- a/include/linux/nvme.h +++ b/include/linux/nvme.h | |||
@@ -99,6 +99,7 @@ struct nvme_dev { | |||
99 | u32 stripe_size; | 99 | u32 stripe_size; |
100 | u16 oncs; | 100 | u16 oncs; |
101 | u16 abort_limit; | 101 | u16 abort_limit; |
102 | u8 vwc; | ||
102 | u8 initialized; | 103 | u8 initialized; |
103 | }; | 104 | }; |
104 | 105 | ||
diff --git a/include/uapi/linux/nvme.h b/include/uapi/linux/nvme.h index ad9014e49693..f090336d5bad 100644 --- a/include/uapi/linux/nvme.h +++ b/include/uapi/linux/nvme.h | |||
@@ -73,6 +73,7 @@ enum { | |||
73 | NVME_CTRL_ONCS_COMPARE = 1 << 0, | 73 | NVME_CTRL_ONCS_COMPARE = 1 << 0, |
74 | NVME_CTRL_ONCS_WRITE_UNCORRECTABLE = 1 << 1, | 74 | NVME_CTRL_ONCS_WRITE_UNCORRECTABLE = 1 << 1, |
75 | NVME_CTRL_ONCS_DSM = 1 << 2, | 75 | NVME_CTRL_ONCS_DSM = 1 << 2, |
76 | NVME_CTRL_VWC_PRESENT = 1 << 0, | ||
76 | }; | 77 | }; |
77 | 78 | ||
78 | struct nvme_lbaf { | 79 | struct nvme_lbaf { |