|
@@ -562,6 +562,17 @@ void wait_on_page_bit(struct page *page, int bit_nr)
|
|
|
}
|
|
|
EXPORT_SYMBOL(wait_on_page_bit);
|
|
|
|
|
|
+int wait_on_page_bit_killable(struct page *page, int bit_nr)
|
|
|
+{
|
|
|
+ DEFINE_WAIT_BIT(wait, &page->flags, bit_nr);
|
|
|
+
|
|
|
+ if (!test_bit(bit_nr, &page->flags))
|
|
|
+ return 0;
|
|
|
+
|
|
|
+ return __wait_on_bit(page_waitqueue(page), &wait,
|
|
|
+ sleep_on_page_killable, TASK_KILLABLE);
|
|
|
+}
|
|
|
+
|
|
|
/**
|
|
|
* add_page_wait_queue - Add an arbitrary waiter to a page's wait queue
|
|
|
* @page: Page defining the wait queue of interest
|