diff --git a/lustre/ChangeLog b/lustre/ChangeLog
index 04c24027e42cd2460350dccc1f95a7d3ef22d97d..8afb64c97666c1dc09234db2430b62711783c057 100644
--- a/lustre/ChangeLog
+++ b/lustre/ChangeLog
@@ -1471,6 +1471,13 @@ Details    : Augment ->do_{read,write}_lock() prototypes with a `role' parameter
 	     indicating lock ordering. Update mdd code to use new locking
 	     interface.
 
+Severity   : normal
+Bugzilla   : 16450
+Description: Introduce failloc constants for lockless IO tests.
+Details    : Add two new failloc constants to test lockless IO. Only one of
+	     them in implemented---another is checked in yet to be landed
+	     core CLIO code.
+
 --------------------------------------------------------------------------------
 
 2007-08-10         Cluster File Systems, Inc. <info@clusterfs.com>
diff --git a/lustre/include/obd_support.h b/lustre/include/obd_support.h
index 7b5d777f72643011e81b35d75760da4439d153f5..78481ceb904265d2ffc9fe2eb5587b8244c45a97 100644
--- a/lustre/include/obd_support.h
+++ b/lustre/include/obd_support.h
@@ -254,6 +254,9 @@ int obd_alloc_fail(const void *ptr, const char *name, const char *type,
 #define OBD_FAIL_LDLM_CANCEL_BL_CB_RACE  0x314
 #define OBD_FAIL_LDLM_CP_CB_WAIT         0x315
 
+/* LOCKLESS IO */
+#define OBD_FAIL_LDLM_SET_CONTENTION     0x315
+
 #define OBD_FAIL_OSC                     0x400
 #define OBD_FAIL_OSC_BRW_READ_BULK       0x401
 #define OBD_FAIL_OSC_BRW_WRITE_BULK      0x402
@@ -268,6 +271,7 @@ int obd_alloc_fail(const void *ptr, const char *name, const char *type,
 #define OBD_FAIL_OSC_CONNECT_CKSUM       0x40b
 #define OBD_FAIL_OSC_CKSUM_ADLER_ONLY    0x40c
 #define OBD_FAIL_OSC_DIO_PAUSE           0x40d
+#define OBD_FAIL_OSC_OBJECT_CONTENTION   0x40e
 
 #define OBD_FAIL_PTLRPC                  0x500
 #define OBD_FAIL_PTLRPC_ACK              0x501
diff --git a/lustre/ldlm/ldlm_extent.c b/lustre/ldlm/ldlm_extent.c
index 689f0a2bc1ac165ceda10f9d270beb55dd440283..3b6543e1b842fc29ece5a9643ca83462694a0403 100644
--- a/lustre/ldlm/ldlm_extent.c
+++ b/lustre/ldlm/ldlm_extent.c
@@ -284,6 +284,9 @@ static int ldlm_check_contention(struct ldlm_lock *lock, int contended_locks)
         struct ldlm_resource *res = lock->l_resource;
         cfs_time_t now = cfs_time_current();
 
+        if (OBD_FAIL_CHECK(OBD_FAIL_LDLM_SET_CONTENTION))
+                return 1;
+
         CDEBUG(D_DLMTRACE, "contended locks = %d\n", contended_locks);
         if (contended_locks > res->lr_namespace->ns_contended_locks)
                 res->lr_contention_time = now;