(cfs_fail_loc & id & CFS_FAULT));
}
-static inline int cfs_fail_check_set(__u32 id, __u32 value,
- int set, int quiet)
+static inline int cfs_fail_check_set(__u32 id, __u32 value, int set, int quiet)
{
+ unsigned long failed_once = cfs_fail_loc & CFS_FAILED; /* ok if racy */
int ret = 0;
if (unlikely(CFS_FAIL_PRECHECK(id) &&
(ret = __cfs_fail_check_set(id, value, set)))) {
- if (quiet) {
+ if (quiet && failed_once) {
CDEBUG(D_INFO, "*** cfs_fail_loc=%x, val=%u***\n",
id, value);
} else {
/* Assign references to moved code to reduce code changes */
#define OBD_FAIL_PRECHECK(id) (unlikely(CFS_FAIL_PRECHECK(id)))
#define OBD_FAIL_CHECK(id) CFS_FAIL_CHECK(id)
+#define OBD_FAIL_CHECK_QUIET(id) CFS_FAIL_CHECK_QUIET(id)
#define OBD_FAIL_CHECK_VALUE(id, value) CFS_FAIL_CHECK_VALUE(id, value)
#define OBD_FAIL_CHECK_ORSET(id, value) CFS_FAIL_CHECK_ORSET(id, value)
#define OBD_FAIL_CHECK_RESET(id, value) CFS_FAIL_CHECK_RESET(id, value)
la->la_valid &= LA_ATIME | LA_MTIME | LA_CTIME;
/* do fake write, to simulate the write case for performance testing */
- if (OBD_FAIL_CHECK(OBD_FAIL_OST_FAKE_RW)) {
+ if (OBD_FAIL_CHECK_QUIET(OBD_FAIL_OST_FAKE_RW)) {
struct niobuf_local *last = &lnb[niocount - 1];
__u64 file_size = last->lnb_file_offset + last->lnb_len;
__u64 valid = la->la_valid;
lnb[i].lnb_rc = lnb[i].lnb_len;
/* Bypass disk read if fail_loc is set properly */
- if (OBD_FAIL_CHECK(OBD_FAIL_OST_FAKE_RW))
+ if (OBD_FAIL_CHECK_QUIET(OBD_FAIL_OST_FAKE_RW))
SetPageUptodate(lnb[i].lnb_page);
if (PageUptodate(lnb[i].lnb_page)) {