diff --git a/lustre/ldlm/ldlm_request.c b/lustre/ldlm/ldlm_request.c
index 7933e50674ce3f3c6c75e53304eea46c9fd4f7fe..6a78cd29f362cd5df5fae5a8c451ed05bc79bd3f 100644
--- a/lustre/ldlm/ldlm_request.c
+++ b/lustre/ldlm/ldlm_request.c
@@ -1041,12 +1041,6 @@ int ldlm_cancel_lru_local(struct ldlm_namespace *ns, struct list_head *cancels,
                 if (ns_connect_lru_resize(ns)) {
                         cfs_time_t la;
 
-                        /* Do not pay attention to slv in case we are asked 
-                         * to cancel particular number of locks (via proc) or
-                         * we already scheduled @added locks for canceling. */            
-                        if (count != 0 && added > count)
-                                break;
-
                         /* Cancel locks by lru only in the case of count == 0. */
                         if (count == 0) {
                                 /* Calculate lv for every lock. */
@@ -1065,6 +1059,9 @@ int ldlm_cancel_lru_local(struct ldlm_namespace *ns, struct list_head *cancels,
                                 lv = lvf * la * unused;
                                 if (slv == 1 || lv < slv)
                                         break;
+                        } else {
+                                if (added > count)
+                                        break;
                         }
                 } else {
                         if ((added >= count) &&