All of lore.kernel.org
 help / color / mirror / Atom feed
* [for 4.5] fix regression for large NVMe user command
@ 2016-03-02 17:07 Christoph Hellwig
  2016-03-02 17:07 ` [PATCH 1/5] nvme: also set BLK_MQ_F_SHOULD_MERGE for the admin queue Christoph Hellwig
                   ` (4 more replies)
  0 siblings, 5 replies; 22+ messages in thread
From: Christoph Hellwig @ 2016-03-02 17:07 UTC (permalink / raw)


Hi Jens, hi Keith,

Jeff reported and issue to me where my change of the NVMe userspace
passthrough ioctls to the generic block code caused a regression for a
firmward dump tool that uses 1MB+ vendor specific userspace command
to dump a large buffer.

While (re)implementing support for multiple bios in blk_rq_map_user
I also ran into lots of existing NVMe bugs that limit I/O size either
in general or specific to some workloads:

 (1) we never set BLK_MQ_F_SHOULD_MERGE for admin commands.  This doesn't
     really affect us here, but we should be consistant with the I/O queue.
 (2) we never set any queue limits for the admin queue, just leaving
     the defaults in place.  Besides causing low I/O limits this also means
     that flags like the virt boundary weren't set and we might pass on
     incorrectly formed SGLs to the driver for admin passthrough.
 (3) because the max_segments field in the queue limits structure is an
     unsigned short we get an integer truncation that would cause all
     NVMe controller that don't set a low MDTS value to actually just get
     a single segment per request.
 (4) last but not least we were applying the low FS request limits to all
     driver private request types, which doesn't make sense.

^ permalink raw reply	[flat|nested] 22+ messages in thread

end of thread, other threads:[~2016-03-15 22:13 UTC | newest]

Thread overview: 22+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-03-02 17:07 [for 4.5] fix regression for large NVMe user command Christoph Hellwig
2016-03-02 17:07 ` [PATCH 1/5] nvme: also set BLK_MQ_F_SHOULD_MERGE for the admin queue Christoph Hellwig
2016-03-02 17:35   ` Sagi Grimberg
2016-03-02 18:15     ` Keith Busch
2016-03-02 21:17     ` Christoph Hellwig
2016-03-02 23:55       ` Ming Lei
     [not found]         ` <20160303084609.GA14051@lst.de>
2016-03-03 11:24           ` blk-mq merge flags Ming Lei
2016-03-03 11:59             ` Christoph Hellwig
2016-03-15 16:08           ` Christoph Hellwig
2016-03-15 22:13             ` Jens Axboe
2016-03-02 20:01   ` [PATCH 1/5] nvme: also set BLK_MQ_F_SHOULD_MERGE for the admin queue Jens Axboe
2016-03-02 17:07 ` [PATCH 2/5] nvme: set queue limits " Christoph Hellwig
2016-03-02 19:10   ` Keith Busch
2016-03-02 17:07 ` [PATCH 3/5] nvme: fix max_segments integer truncation Christoph Hellwig
2016-03-02 18:27   ` Keith Busch
2016-03-02 17:07 ` [PATCH 4/5] block: fix blk_rq_get_max_sectors for driver private requests Christoph Hellwig
2016-03-02 19:17   ` Keith Busch
2016-03-02 21:18     ` Christoph Hellwig
2016-03-02 22:16       ` Jens Axboe
2016-03-02 17:07 ` [PATCH 5/5] block: support large requests in blk_rq_map_user_iov Christoph Hellwig
2016-03-02 19:34   ` Keith Busch
2016-03-02 21:20     ` Christoph Hellwig

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.