IOSCHED: prevent aliased requests from starving other I/O
/block/deadline-iosched.c
blob:c644137d9cd643b0e3b80750333dc42e92d1e964 -> blob:5139c0ea1864a858b6072febcf636a71e9bc6f13
--- block/deadline-iosched.c
+++ block/deadline-iosched.c
@@ -77,8 +77,10 @@ static void
deadline_add_rq_rb(struct deadline_data *dd, struct request *rq)
{
struct rb_root *root = deadline_rb_root(dd, rq);
+ struct request *__alias;
- elv_rb_add(root, rq);
+ while (unlikely(__alias = elv_rb_add(root, rq)))
+ deadline_move_request(dd, __alias);
}
static inline void