Whamcloud - gitweb
LU-2446 build: Update Whamcloud copyright messages for Intel
[fs/lustre-release.git] / libcfs / libcfs / fail.c
index d653ee6..128d1d1 100644 (file)
@@ -1,6 +1,4 @@
-/* -*- mode: c; c-basic-offset: 8; indent-tabs-mode: nil; -*-
- * vim:expandtab:shiftwidth=8:tabstop=8:
- *
+/*
  * GPL HEADER START
  *
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -27,6 +25,8 @@
 /*
  * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
  * Use is subject to license terms.
+ *
+ * Copyright (c) 2011, 2012, Intel Corporation.
  */
 /*
  * This file is part of Lustre, http://www.lustre.org/
@@ -73,13 +73,19 @@ int __cfs_fail_check_set(__u32 id, __u32 value, int set)
                         return 0;
         }
 
+        /* check cfs_fail_val... */
+        if (set == CFS_FAIL_LOC_VALUE) {
+                if (cfs_fail_val != -1 && cfs_fail_val != value)
+                        return 0;
+        }
+
         /* Fail cfs_fail_val times, overridden by FAIL_ONCE */
         if (cfs_fail_loc & CFS_FAIL_SOME &&
             (!(cfs_fail_loc & CFS_FAIL_ONCE) || cfs_fail_val <= 1)) {
                 int count = cfs_atomic_inc_return(&cfs_fail_count);
 
                 if (count >= cfs_fail_val) {
-                        cfs_set_bit(CFS_FAIL_ONCE_BIT, &cfs_fail_loc);
+                       set_bit(CFS_FAIL_ONCE_BIT, &cfs_fail_loc);
                         cfs_atomic_set(&cfs_fail_count, 0);
                         /* we are lost race to increase  */
                         if (count > cfs_fail_val)
@@ -89,9 +95,9 @@ int __cfs_fail_check_set(__u32 id, __u32 value, int set)
 
         if ((set == CFS_FAIL_LOC_ORSET || set == CFS_FAIL_LOC_RESET) &&
             (value & CFS_FAIL_ONCE))
-                cfs_set_bit(CFS_FAIL_ONCE_BIT, &cfs_fail_loc);
+               set_bit(CFS_FAIL_ONCE_BIT, &cfs_fail_loc);
         /* Lost race to set CFS_FAILED_BIT. */
-        if (cfs_test_and_set_bit(CFS_FAILED_BIT, &cfs_fail_loc)) {
+       if (test_and_set_bit(CFS_FAILED_BIT, &cfs_fail_loc)) {
                 /* If CFS_FAIL_ONCE is valid, only one process can fail,
                  * otherwise multi-process can fail at the same time. */
                 if (cfs_fail_loc & CFS_FAIL_ONCE)
@@ -100,6 +106,7 @@ int __cfs_fail_check_set(__u32 id, __u32 value, int set)
 
         switch (set) {
                 case CFS_FAIL_LOC_NOSET:
+                case CFS_FAIL_LOC_VALUE:
                         break;
                 case CFS_FAIL_LOC_ORSET:
                         cfs_fail_loc |= value & ~(CFS_FAILED | CFS_FAIL_ONCE);