summaryrefslogtreecommitdiffstats
path: root/sys/dev/nvd
diff options
context:
space:
mode:
authorjimharris <jimharris@FreeBSD.org>2015-07-21 20:53:21 +0000
committerjimharris <jimharris@FreeBSD.org>2015-07-21 20:53:21 +0000
commit174d03197671f21a94c5b36c8b46545725169456 (patch)
treed1847a98f7e1f68a7a01e779a5103d9eb38a0abe /sys/dev/nvd
parentb1cbea06222d3a117573c4ac4875f1d0ae0955cb (diff)
downloadFreeBSD-src-174d03197671f21a94c5b36c8b46545725169456.zip
FreeBSD-src-174d03197671f21a94c5b36c8b46545725169456.tar.gz
nvd: set d_delmaxsize to full capacity of NVMe namespace
The NVMe specification has no ability to specify a maximum delete size that is less than the full capacity of the namespace - so just using the namespace size is the correct value here. This fixes reported issues where ZFS trim on init looked like it was hanging the system - previously the default I/O max size (128KB on Intel NVMe controllers) was used for delete operations which worked out to only about 8MB/s. With this patch I can add an 800GB DC P3700 drive to a ZFS pool in about 15-20 seconds. Reported by: Dylan Just <dylan@techtangents.com> MFC after: 3 days Sponsored by: Intel
Diffstat (limited to 'sys/dev/nvd')
-rw-r--r--sys/dev/nvd/nvd.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/sys/dev/nvd/nvd.c b/sys/dev/nvd/nvd.c
index b48fb35..016d728 100644
--- a/sys/dev/nvd/nvd.c
+++ b/sys/dev/nvd/nvd.c
@@ -278,6 +278,7 @@ nvd_new_disk(struct nvme_namespace *ns, void *ctrlr_arg)
disk->d_maxsize = nvme_ns_get_max_io_xfer_size(ns);
disk->d_sectorsize = nvme_ns_get_sector_size(ns);
disk->d_mediasize = (off_t)nvme_ns_get_size(ns);
+ disk->d_delmaxsize = (off_t)nvme_ns_get_size(ns);
if (TAILQ_EMPTY(&disk_head))
disk->d_unit = 0;
OpenPOWER on IntegriCloud