The comment for op_is_sync() says "Reads are always treated as synchronous", but it only checks for REQ_OP_READ.
Use op_is_write() to detect read ops and treat them as synchronous. Fixes: aebf526b53ae ("block: fold cmd_type into the REQ_OP_ space") Signed-off-by: Jeffy Chen <jeffy.c...@rock-chips.com> --- Changes in v2: Rewrite commit message. include/linux/blk_types.h | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/include/linux/blk_types.h b/include/linux/blk_types.h index 3385c89f402e..b6a71c2eec36 100644 --- a/include/linux/blk_types.h +++ b/include/linux/blk_types.h @@ -288,8 +288,7 @@ static inline bool op_is_flush(unsigned int op) */ static inline bool op_is_sync(unsigned int op) { - return (op & REQ_OP_MASK) == REQ_OP_READ || - (op & (REQ_SYNC | REQ_FUA | REQ_PREFLUSH)); + return !op_is_write(op) || (op & (REQ_SYNC | REQ_FUA | REQ_PREFLUSH)); } typedef unsigned int blk_qc_t; -- 2.11.0