Hello,
Yi reported several kernel panics on:
[16687.001777] Unable to handle kernel NULL pointer dereference at virtual address 0000000000000008
...
[16687.163549] pc : __rq_qos_track+0x38/0x60
or
[ 997.690455] Unable to handle kernel NULL pointer dereference at virtual address 0000000000000020
...
[ 997.850347] pc : __rq_qos_done+0x2c/0x50
Turns out it is caused by race between adding wbt and normal IO.
Fix the issue by freezing request queue when adding/deleting rq qos.
V2:
- switch to the approach of freezing queue, which is more generic
than V1.
Ming Lei (2):
block: fix race between adding/removing rq qos and normal IO
block: mark queue init done at the end of blk_register_queue
block/blk-rq-qos.h | 13 +++++++++++++
block/blk-sysfs.c | 29 +++++++++++++++--------------
2 files changed, 28 insertions(+), 14 deletions(-)
Cc: Yi Zhang <redacted>
Cc: Bart Van Assche <bvanassche@acm.org>
--
2.31.1