lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:	Wed, 25 Jun 2014 09:51:43 +0800
From:	Ming Lei <tom.leiming@...il.com>
To:	Matias Bjørling <m@...rling.me>
Cc:	Matthew Wilcox <willy@...ux.intel.com>,
	Keith Busch <keith.busch@...el.com>,
	"Sam Bradshaw (sbradshaw)" <sbradshaw@...ron.com>,
	Jens Axboe <axboe@...com>,
	Linux Kernel Mailing List <linux-kernel@...r.kernel.org>,
	linux-nvme <linux-nvme@...ts.infradead.org>,
	Christoph Hellwig <hch@...radead.org>, rlnelson@...gle.com
Subject: Re: [PATCH v9] NVMe: Convert to blk-mq

On Wed, Jun 25, 2014 at 7:12 AM, Matias Bjørling <m@...rling.me> wrote:
> This converts the current NVMe driver to utilize the blk-mq layer.
>
> Contributions in this patch from:
>
>   Sam Bradshaw <sbradshaw@...ron.com>
>   Jens Axboe <axboe@...nel.dk>
>   Keith Busch <keith.busch@...el.com>
>   Christoph Hellwig <hch@...radead.org>
>   Robert Nelson <rlnelson@...gle.com>
>
> Acked-by: Keith Busch <keith.busch@...el.com>
> Acked-by: Jens Axboe <axboe@...com>
> Signed-off-by: Matias Bjørling <m@...rling.me>
> ---
>  drivers/block/nvme-core.c | 1204 ++++++++++++++++++---------------------------
>  drivers/block/nvme-scsi.c |    8 +-
>  include/linux/nvme.h      |   15 +-
>  3 files changed, 489 insertions(+), 738 deletions(-)
>
> diff --git a/drivers/block/nvme-core.c b/drivers/block/nvme-core.c
> index 6e8ce4f..ecbf5dd 100644
> --- a/drivers/block/nvme-core.c
> +++ b/drivers/block/nvme-core.c

> -static void bio_completion(struct nvme_queue *nvmeq, void *ctx,
> +static void req_completion(struct nvme_queue *nvmeq, void *ctx,
>                                                 struct nvme_completion *cqe)
>  {
>         struct nvme_iod *iod = ctx;
> -       struct bio *bio = iod->private;
> +       struct request *req = iod->private;
> +       struct nvme_cmd_info *cmd_rq = blk_mq_rq_to_pdu(req);
> +
>         u16 status = le16_to_cpup(&cqe->status) >> 1;
> -       int error = 0;
>
>         if (unlikely(status)) {
> -               if (!(status & NVME_SC_DNR ||
> -                               bio->bi_rw & REQ_FAILFAST_MASK) &&
> -                               (jiffies - iod->start_time) < IOD_TIMEOUT) {
> -                       if (!waitqueue_active(&nvmeq->sq_full))
> -                               add_wait_queue(&nvmeq->sq_full,
> -                                                       &nvmeq->sq_cong_wait);
> -                       list_add_tail(&iod->node, &nvmeq->iod_bio);
> -                       wake_up(&nvmeq->sq_full);
> +               if (!(status & NVME_SC_DNR || blk_noretry_request(req))
> +                   && (jiffies - req->start_time) < req->timeout) {
> +                       blk_mq_requeue_request(req);

You need to call blk_mq_kick_requeue_list() following
blk_mq_requeue_request(), otherwise the request won't
be scheduled to hw queue.

Thanks,
--
Ming Lei
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ