projects
/
cascardo
/
linux.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux...
[cascardo/linux.git]
/
block
/
blk-mq-tag.c
diff --git
a/block/blk-mq-tag.c
b/block/blk-mq-tag.c
index
32e8dbb
..
60c9d4a
100644
(file)
--- a/
block/blk-mq-tag.c
+++ b/
block/blk-mq-tag.c
@@
-68,9
+68,9
@@
bool __blk_mq_tag_busy(struct blk_mq_hw_ctx *hctx)
}
/*
}
/*
- * Wakeup all potentially sleeping on
normal (non-reserved)
tags
+ * Wakeup all potentially sleeping on tags
*/
*/
-
static void blk_mq_tag_wakeup_all(struct blk_mq_tags *tags
)
+
void blk_mq_tag_wakeup_all(struct blk_mq_tags *tags, bool include_reserve
)
{
struct blk_mq_bitmap_tags *bt;
int i, wake_index;
{
struct blk_mq_bitmap_tags *bt;
int i, wake_index;
@@
-85,6
+85,12
@@
static void blk_mq_tag_wakeup_all(struct blk_mq_tags *tags)
wake_index = bt_index_inc(wake_index);
}
wake_index = bt_index_inc(wake_index);
}
+
+ if (include_reserve) {
+ bt = &tags->breserved_tags;
+ if (waitqueue_active(&bt->bs[0].wait))
+ wake_up(&bt->bs[0].wait);
+ }
}
/*
}
/*
@@
-100,7
+106,7
@@
void __blk_mq_tag_idle(struct blk_mq_hw_ctx *hctx)
atomic_dec(&tags->active_queues);
atomic_dec(&tags->active_queues);
- blk_mq_tag_wakeup_all(tags);
+ blk_mq_tag_wakeup_all(tags
, false
);
}
/*
}
/*
@@
-584,7
+590,7
@@
int blk_mq_tag_update_depth(struct blk_mq_tags *tags, unsigned int tdepth)
* static and should never need resizing.
*/
bt_update_count(&tags->bitmap_tags, tdepth);
* static and should never need resizing.
*/
bt_update_count(&tags->bitmap_tags, tdepth);
- blk_mq_tag_wakeup_all(tags);
+ blk_mq_tag_wakeup_all(tags
, false
);
return 0;
}
return 0;
}