mirror of https://gitee.com/openkylin/linux.git
nvme: trace bio completion
When native multipathing is enabled we cannot enable blktrace for the underlying paths, so any completion is never traced. Signed-off-by: Hannes Reinecke <hare@suse.com> [fixed-up by Mikhail for non-multipath-build] Signed-off-by: Mikhail Skorzhinskii <mskorzhinskiy@solarflare.com> Reviewed-by: Sagi Grimberg <sagi@grimberg.me> Signed-off-by: Sagi Grimberg <sagi@grimberg.me>
This commit is contained in:
parent
e01f91dff9
commit
35fe0d12c8
|
@ -22,12 +22,12 @@
|
||||||
#include <linux/pm_qos.h>
|
#include <linux/pm_qos.h>
|
||||||
#include <asm/unaligned.h>
|
#include <asm/unaligned.h>
|
||||||
|
|
||||||
#define CREATE_TRACE_POINTS
|
|
||||||
#include "trace.h"
|
|
||||||
|
|
||||||
#include "nvme.h"
|
#include "nvme.h"
|
||||||
#include "fabrics.h"
|
#include "fabrics.h"
|
||||||
|
|
||||||
|
#define CREATE_TRACE_POINTS
|
||||||
|
#include "trace.h"
|
||||||
|
|
||||||
#define NVME_MINORS (1U << MINORBITS)
|
#define NVME_MINORS (1U << MINORBITS)
|
||||||
|
|
||||||
unsigned int admin_timeout = 60;
|
unsigned int admin_timeout = 60;
|
||||||
|
@ -279,6 +279,8 @@ void nvme_complete_rq(struct request *req)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
nvme_trace_bio_complete(req, status);
|
||||||
blk_mq_end_request(req, status);
|
blk_mq_end_request(req, status);
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(nvme_complete_rq);
|
EXPORT_SYMBOL_GPL(nvme_complete_rq);
|
||||||
|
|
|
@ -16,6 +16,8 @@
|
||||||
#include <linux/fault-inject.h>
|
#include <linux/fault-inject.h>
|
||||||
#include <linux/rcupdate.h>
|
#include <linux/rcupdate.h>
|
||||||
|
|
||||||
|
#include <trace/events/block.h>
|
||||||
|
|
||||||
extern unsigned int nvme_io_timeout;
|
extern unsigned int nvme_io_timeout;
|
||||||
#define NVME_IO_TIMEOUT (nvme_io_timeout * HZ)
|
#define NVME_IO_TIMEOUT (nvme_io_timeout * HZ)
|
||||||
|
|
||||||
|
@ -511,6 +513,16 @@ static inline void nvme_mpath_check_last_path(struct nvme_ns *ns)
|
||||||
kblockd_schedule_work(&head->requeue_work);
|
kblockd_schedule_work(&head->requeue_work);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline void nvme_trace_bio_complete(struct request *req,
|
||||||
|
blk_status_t status)
|
||||||
|
{
|
||||||
|
struct nvme_ns *ns = req->q->queuedata;
|
||||||
|
|
||||||
|
if (req->cmd_flags & REQ_NVME_MPATH)
|
||||||
|
trace_block_bio_complete(ns->head->disk->queue,
|
||||||
|
req->bio, status);
|
||||||
|
}
|
||||||
|
|
||||||
extern struct device_attribute dev_attr_ana_grpid;
|
extern struct device_attribute dev_attr_ana_grpid;
|
||||||
extern struct device_attribute dev_attr_ana_state;
|
extern struct device_attribute dev_attr_ana_state;
|
||||||
extern struct device_attribute subsys_attr_iopolicy;
|
extern struct device_attribute subsys_attr_iopolicy;
|
||||||
|
@ -554,6 +566,10 @@ static inline void nvme_mpath_clear_current_path(struct nvme_ns *ns)
|
||||||
static inline void nvme_mpath_check_last_path(struct nvme_ns *ns)
|
static inline void nvme_mpath_check_last_path(struct nvme_ns *ns)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
static inline void nvme_trace_bio_complete(struct request *req,
|
||||||
|
blk_status_t status)
|
||||||
|
{
|
||||||
|
}
|
||||||
static inline int nvme_mpath_init(struct nvme_ctrl *ctrl,
|
static inline int nvme_mpath_init(struct nvme_ctrl *ctrl,
|
||||||
struct nvme_id_ctrl *id)
|
struct nvme_id_ctrl *id)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue