block: add centralize REQ_OP_XXX to string helper
In order to centralize the REQ_OP_XXX to string conversion which can be used in the block layer and different places in the kernel like f2fs, this patch adds a new helper function along with an array similar to the one present in the blk-mq-debugfs.c. We keep this helper functionality centralize under blk-core.c instead of blk-mq-debugfs.c since blk-core.c is configured using CONFIG_BLOCK and it will not be dependent on blk-mq-debugfs.c which is configured using CONFIG_BLK_DEBUG_FS. Next patch adjusts the code in the blk-mq-debugfs.c with newly introduced helper. Reviewed-by: Bart Van Assche <bvanassche@acm.org> Signed-off-by: Chaitanya Kulkarni <chaitanya.kulkarni@wdc.com> Signed-off-by: Jens Axboe <axboe@kernel.dk>alistair/sunxi64-5.4-dsi
parent
178cc590e5
commit
e47bc4eda9
|
@ -120,6 +120,42 @@ void blk_rq_init(struct request_queue *q, struct request *rq)
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(blk_rq_init);
|
EXPORT_SYMBOL(blk_rq_init);
|
||||||
|
|
||||||
|
#define REQ_OP_NAME(name) [REQ_OP_##name] = #name
|
||||||
|
static const char *const blk_op_name[] = {
|
||||||
|
REQ_OP_NAME(READ),
|
||||||
|
REQ_OP_NAME(WRITE),
|
||||||
|
REQ_OP_NAME(FLUSH),
|
||||||
|
REQ_OP_NAME(DISCARD),
|
||||||
|
REQ_OP_NAME(SECURE_ERASE),
|
||||||
|
REQ_OP_NAME(ZONE_RESET),
|
||||||
|
REQ_OP_NAME(WRITE_SAME),
|
||||||
|
REQ_OP_NAME(WRITE_ZEROES),
|
||||||
|
REQ_OP_NAME(SCSI_IN),
|
||||||
|
REQ_OP_NAME(SCSI_OUT),
|
||||||
|
REQ_OP_NAME(DRV_IN),
|
||||||
|
REQ_OP_NAME(DRV_OUT),
|
||||||
|
};
|
||||||
|
#undef REQ_OP_NAME
|
||||||
|
|
||||||
|
/**
|
||||||
|
* blk_op_str - Return string XXX in the REQ_OP_XXX.
|
||||||
|
* @op: REQ_OP_XXX.
|
||||||
|
*
|
||||||
|
* Description: Centralize block layer function to convert REQ_OP_XXX into
|
||||||
|
* string format. Useful in the debugging and tracing bio or request. For
|
||||||
|
* invalid REQ_OP_XXX it returns string "UNKNOWN".
|
||||||
|
*/
|
||||||
|
inline const char *blk_op_str(unsigned int op)
|
||||||
|
{
|
||||||
|
const char *op_str = "UNKNOWN";
|
||||||
|
|
||||||
|
if (op < ARRAY_SIZE(blk_op_name) && blk_op_name[op])
|
||||||
|
op_str = blk_op_name[op];
|
||||||
|
|
||||||
|
return op_str;
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL_GPL(blk_op_str);
|
||||||
|
|
||||||
static const struct {
|
static const struct {
|
||||||
int errno;
|
int errno;
|
||||||
const char *name;
|
const char *name;
|
||||||
|
|
|
@ -865,6 +865,9 @@ extern void blk_execute_rq(struct request_queue *, struct gendisk *,
|
||||||
extern void blk_execute_rq_nowait(struct request_queue *, struct gendisk *,
|
extern void blk_execute_rq_nowait(struct request_queue *, struct gendisk *,
|
||||||
struct request *, int, rq_end_io_fn *);
|
struct request *, int, rq_end_io_fn *);
|
||||||
|
|
||||||
|
/* Helper to convert REQ_OP_XXX to its string format XXX */
|
||||||
|
extern const char *blk_op_str(unsigned int op);
|
||||||
|
|
||||||
int blk_status_to_errno(blk_status_t status);
|
int blk_status_to_errno(blk_status_t status);
|
||||||
blk_status_t errno_to_blk_status(int errno);
|
blk_status_t errno_to_blk_status(int errno);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue