|
@@ -520,7 +520,7 @@ static inline void really_put_req(struct kioctx *ctx, struct kiocb *req)
|
|
ctx->reqs_active--;
|
|
ctx->reqs_active--;
|
|
|
|
|
|
if (unlikely(!ctx->reqs_active && ctx->dead))
|
|
if (unlikely(!ctx->reqs_active && ctx->dead))
|
|
- wake_up(&ctx->wait);
|
|
|
|
|
|
+ wake_up_all(&ctx->wait);
|
|
}
|
|
}
|
|
|
|
|
|
static void aio_fput_routine(struct work_struct *data)
|
|
static void aio_fput_routine(struct work_struct *data)
|
|
@@ -1229,7 +1229,7 @@ static void io_destroy(struct kioctx *ioctx)
|
|
* by other CPUs at this point. Right now, we rely on the
|
|
* by other CPUs at this point. Right now, we rely on the
|
|
* locking done by the above calls to ensure this consistency.
|
|
* locking done by the above calls to ensure this consistency.
|
|
*/
|
|
*/
|
|
- wake_up(&ioctx->wait);
|
|
|
|
|
|
+ wake_up_all(&ioctx->wait);
|
|
put_ioctx(ioctx); /* once for the lookup */
|
|
put_ioctx(ioctx); /* once for the lookup */
|
|
}
|
|
}
|
|
|
|
|