Version 0.8 uploaded
Matthew Wilcox
willy at linux.intel.com
Wed Jan 11 09:50:02 EST 2012
I've just pushed out version 0.8 of the driver. Here's the shortlog:
Matthew Wilcox (13):
NVMe: Implement doorbell stride capability
NVMe: Update Identify Controller data structure
NVMe: Simplify completion handling
NVMe: Change get_nvmeq to take a dev instead of a namespace
NVMe: Change nvme_completion_fn to take a dev
NVMe: Merge the nvme_bio and nvme_prp data structures
NVMe: Rename IO_TIMEOUT to NVME_IO_TIMEOUT
NVMe: Fix DMA mapping for admin commands
NVMe: Mark the end of the sg list
NVMe: Simplify nvme_unmap_user_pages
NVMe: Set queue flags correctly
NVMe: Version 0.8
NVMe: Set number of queues correctly
Mostly bugfixes, but the big change is merging the nvme_bio and nvme_prp
data structures. I've been made aware that certain applications mostly
send I/Os larger than a single page; in particular MySQL uses 16k I/Os.
That was probably the pessimal size for the NVMe driver; just large
enough to cause it to allocate an nvme_prp data structure and small
enough that per-I/O overhead is still meaningful.
So I merged the nvme_bio and nvme_prp data structures into the new
nvme_iod data structure. This was a bit of a challenge since it needs
to contain two variable-length arrays, which C does not permit you to
express neatly. I hope the comments around the data structure make it
clear what I'm doing. I saw noticable reductions in per-I/O CPU overhead
with the new scheme, so I think it's worthwhile. Also, the additional
overhead for 512-byte I/Os was down in the noise and it was completely
unmeasurable for 4k I/Os.
I plan to ask Linus to merge this version of the driver for Linux 3.3.
I know there's still a lot on the TODO list, but we'll have a chance to
merge more patches in April. I have a couple of patches from Keith Busch
still to review (adding a character device to represent the controller
and the beginnings of an error handler), but I'd rather get what we have
merged now than wait for the next merge window.
More information about the Linux-nvme
mailing list