|
@@ -394,20 +394,12 @@ EXPORT_SYMBOL(ib_destroy_fmr_pool);
|
|
|
*/
|
|
|
int ib_flush_fmr_pool(struct ib_fmr_pool *pool)
|
|
|
{
|
|
|
- int serial;
|
|
|
-
|
|
|
- atomic_inc(&pool->req_ser);
|
|
|
- /*
|
|
|
- * It's OK if someone else bumps req_ser again here -- we'll
|
|
|
- * just wait a little longer.
|
|
|
- */
|
|
|
- serial = atomic_read(&pool->req_ser);
|
|
|
+ int serial = atomic_inc_return(&pool->req_ser);
|
|
|
|
|
|
wake_up_process(pool->thread);
|
|
|
|
|
|
if (wait_event_interruptible(pool->force_wait,
|
|
|
- atomic_read(&pool->flush_ser) -
|
|
|
- atomic_read(&pool->req_ser) >= 0))
|
|
|
+ atomic_read(&pool->flush_ser) - serial >= 0))
|
|
|
return -EINTR;
|
|
|
|
|
|
return 0;
|