Whamcloud - gitweb
LU-7311 osd: smp_mb__before_clear_bit deprecated since kernel 3.16
[fs/lustre-release.git] / lustre / osd-ldiskfs / osd_iam.h
index aeccdbc..e8e868a 100644 (file)
@@ -27,7 +27,7 @@
  * Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved.
  * Use is subject to license terms.
  *
- * Copyright (c) 2011, 2012, Intel Corporation.
+ * Copyright (c) 2011, 2015, Intel Corporation.
  */
 /*
  * This file is part of Lustre, http://www.lustre.org/
@@ -92,7 +92,6 @@ enum {
         DX_FMT_NAME_LEN    = 16,
 };
 
-#ifdef __KERNEL__
 
 /*
  * Debugging.
@@ -485,10 +484,8 @@ struct iam_container {
          */
        struct rw_semaphore     ic_sem;
        struct dynlock       ic_tree_lock;
-       /*
-        * Protect ic_idle_bh
-        */
-       struct semaphore        ic_idle_sem;
+       /* Protect ic_idle_bh */
+       struct mutex         ic_idle_mutex;
        /*
         * BH for idle blocks
         */
@@ -1023,7 +1020,7 @@ int iam_lvar_create(struct inode *obj,
 #define dxtrace(command) 
 #endif
 
-#define BH_DXLock        25
+#define BH_DXLock        (BH_BITMAP_UPTODATE + 1)
 #define DX_DEBUG (0)
 #if DX_DEBUG
 static struct iam_lock_stats {
@@ -1041,7 +1038,7 @@ static inline void iam_lock_bh(struct buffer_head volatile *bh)
 {
         DX_DEVAL(iam_lock_stats.dls_bh_lock++);
 #ifdef CONFIG_SMP
-       while (test_and_set_bit(BH_DXLock, &bh->b_state)) {
+       while (test_and_set_bit_lock(BH_DXLock, &bh->b_state)) {
                DX_DEVAL(iam_lock_stats.dls_bh_busy++);
                while (test_bit(BH_DXLock, &bh->b_state))
                         cpu_relax();
@@ -1052,8 +1049,7 @@ static inline void iam_lock_bh(struct buffer_head volatile *bh)
 static inline void iam_unlock_bh(struct buffer_head *bh)
 {
 #ifdef CONFIG_SMP
-        smp_mb__before_clear_bit();
-        clear_bit(BH_DXLock, &bh->b_state);
+       clear_bit_unlock(BH_DXLock, &bh->b_state);
 #endif
 }
 
@@ -1096,7 +1092,7 @@ struct iam_format {
         /*
          * Linkage into global list of container formats.
          */
-        cfs_list_t if_linkage;
+       struct list_head if_linkage;
 };
 
 void iam_format_register(struct iam_format *fmt);
@@ -1133,7 +1129,6 @@ static inline int ldiskfs_check_dir_entry(const char * function,
 */
 
 /* __KERNEL__ */
-#endif
 
 /*
  * User level API. Copy exists in lustre/lustre/tests/iam_ut.c