- /* Wait for dquot users */
- if (atomic_read(&dquot->dq_count)) {
- DEFINE_WAIT(wait);
-
- atomic_inc(&dquot->dq_count);
- prepare_to_wait(&dquot->dq_wait_unused, &wait,
- TASK_UNINTERRUPTIBLE);
- spin_unlock(&dq_list_lock);
- /* Once dqput() wakes us up, we know it's time to free
- * the dquot.
- * IMPORTANT: we rely on the fact that there is always
- * at most one process waiting for dquot to free.
- * Otherwise dq_count would be > 1 and we would never
- * wake up.
- */
- if (atomic_read(&dquot->dq_count) > 1)
- schedule();
- finish_wait(&dquot->dq_wait_unused, &wait);
- dqput(dquot);
- /* At this moment dquot() need not exist (it could be
- * reclaimed by prune_dqcache(). Hence we must
- * restart. */
- goto restart;
- }
- /*
- * Quota now has no users and it has been written on last
- * dqput()
- */
+#ifdef __DQUOT_PARANOIA
+ if (atomic_read(&dquot->dq_count))
+ BUG();
+#endif
+ /* Quota now has no users and it has been written on last dqput() */