usb: gadget: udc: reduce indentation
[linux-2.6-block.git] / fs / dax.c
index 262e14f299337803aa3656adca515722cb89796b..6959837cc4659e16e19788d7bc362c3fb10b1b4e 100644 (file)
--- a/fs/dax.c
+++ b/fs/dax.c
@@ -246,18 +246,16 @@ static void wait_entry_unlocked(struct xa_state *xas, void *entry)
        ewait.wait.func = wake_exceptional_entry_func;
 
        wq = dax_entry_waitqueue(xas, entry, &ewait.key);
-       prepare_to_wait_exclusive(wq, &ewait.wait, TASK_UNINTERRUPTIBLE);
+       /*
+        * Unlike get_unlocked_entry() there is no guarantee that this
+        * path ever successfully retrieves an unlocked entry before an
+        * inode dies. Perform a non-exclusive wait in case this path
+        * never successfully performs its own wake up.
+        */
+       prepare_to_wait(wq, &ewait.wait, TASK_UNINTERRUPTIBLE);
        xas_unlock_irq(xas);
        schedule();
        finish_wait(wq, &ewait.wait);
-
-       /*
-        * Entry lock waits are exclusive. Wake up the next waiter since
-        * we aren't sure we will acquire the entry lock and thus wake
-        * the next waiter up on unlock.
-        */
-       if (waitqueue_active(wq))
-               __wake_up(wq, TASK_NORMAL, 1, &ewait.key);
 }
 
 static void put_unlocked_entry(struct xa_state *xas, void *entry)