From: Jan Kara <jack@suse.cz>
Subject: Fix kabi of prepare_to_wait_exclusive()
Patch-mainline: Never, kabi fix
References: bsc#1189575
Fix kabi of prepare_to_wait_exclusive() by introducing new function instead
of changing the old one.
Signed-off-by: Jan Kara <jack@suse.cz>
---
block/blk-rq-qos.c | 4 ++--
include/linux/wait.h | 3 ++-
kernel/sched/wait.c | 9 ++++++++-
3 files changed, 12 insertions(+), 4 deletions(-)
--- a/block/blk-rq-qos.c
+++ b/block/blk-rq-qos.c
@@ -266,8 +266,8 @@ void rq_qos_wait(struct rq_wait *rqw, vo
if (!has_sleeper && acquire_inflight_cb(rqw, private_data))
return;
- has_sleeper = !prepare_to_wait_exclusive(&rqw->wait, &data.wq,
- TASK_UNINTERRUPTIBLE);
+ has_sleeper = !prepare_to_wait_exclusive_first(&rqw->wait, &data.wq,
+ TASK_UNINTERRUPTIBLE);
do {
/* The memory barrier in set_task_state saves us here. */
if (data.got_token)
--- a/include/linux/wait.h
+++ b/include/linux/wait.h
@@ -1121,7 +1121,8 @@ do { \
* Waitqueues which are removed from the waitqueue_head at wakeup time
*/
void prepare_to_wait(struct wait_queue_head *wq_head, struct wait_queue_entry *wq_entry, int state);
-bool prepare_to_wait_exclusive(struct wait_queue_head *wq_head, struct wait_queue_entry *wq_entry, int state);
+void prepare_to_wait_exclusive(struct wait_queue_head *wq_head, struct wait_queue_entry *wq_entry, int state);
+bool prepare_to_wait_exclusive_first(struct wait_queue_head *wq_head, struct wait_queue_entry *wq_entry, int state);
long prepare_to_wait_event(struct wait_queue_head *wq_head, struct wait_queue_entry *wq_entry, int state);
void finish_wait(struct wait_queue_head *wq_head, struct wait_queue_entry *wq_entry);
long wait_woken(struct wait_queue_entry *wq_entry, unsigned mode, long timeout);
--- a/kernel/sched/wait.c
+++ b/kernel/sched/wait.c
@@ -234,7 +234,7 @@ EXPORT_SYMBOL(prepare_to_wait);
/* Returns true if we are the first waiter in the queue, false otherwise. */
bool
-prepare_to_wait_exclusive(struct wait_queue_head *wq_head, struct wait_queue_entry *wq_entry, int state)
+prepare_to_wait_exclusive_first(struct wait_queue_head *wq_head, struct wait_queue_entry *wq_entry, int state)
{
unsigned long flags;
bool was_empty = false;
@@ -249,6 +249,13 @@ prepare_to_wait_exclusive(struct wait_qu
spin_unlock_irqrestore(&wq_head->lock, flags);
return was_empty;
}
+EXPORT_SYMBOL(prepare_to_wait_exclusive_first);
+
+void
+prepare_to_wait_exclusive(struct wait_queue_head *wq_head, struct wait_queue_entry *wq_entry, int state)
+{
+ prepare_to_wait_exclusive_first(wq_head, wq_entry, state);
+}
EXPORT_SYMBOL(prepare_to_wait_exclusive);
void init_wait_entry(struct wait_queue_entry *wq_entry, int flags)