]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - fs/lockd/clntproc.c
hugetlb: pull gigantic page initialisation out of the default path
[linux-2.6-omap-h63xx.git] / fs / lockd / clntproc.c
index 1f6dc518505c90b77e3bed2217f8d8de93f0803a..31668b690e03d4e482a8affb7657a310cffac1c0 100644 (file)
@@ -582,7 +582,15 @@ again:
        }
        if (status < 0)
                goto out_unlock;
-       status = nlm_stat_to_errno(resp->status);
+       /*
+        * EAGAIN doesn't make sense for sleeping locks, and in some
+        * cases NLM_LCK_DENIED is returned for a permanent error.  So
+        * turn it into an ENOLCK.
+        */
+       if (resp->status == nlm_lck_denied && (fl_flags & FL_SLEEP))
+               status = -ENOLCK;
+       else
+               status = nlm_stat_to_errno(resp->status);
 out_unblock:
        nlmclnt_finish_block(block);
 out: