X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=lustre%2Fosd-ldiskfs%2Fosd_iam.h;h=e3738d7c6f63bb8224236cdad3f8f336494542bc;hb=cfa981f3bf06d602aee998e64d4758e13f48aab8;hp=f55a11b10391cc093852e2f76074ca57eebd58d7;hpb=7cbd1b0c7409b4bfb44dc6869afc4ff9c90a7dce;p=fs%2Flustre-release.git diff --git a/lustre/osd-ldiskfs/osd_iam.h b/lustre/osd-ldiskfs/osd_iam.h index f55a11b..e3738d7 100644 --- a/lustre/osd-ldiskfs/osd_iam.h +++ b/lustre/osd-ldiskfs/osd_iam.h @@ -14,12 +14,8 @@ * in the LICENSE file that accompanied this code). * * You should have received a copy of the GNU General Public License - * version 2 along with this program; If not, see [sun.com URL with a - * copy of GPLv2]. - * - * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. + * version 2 along with this program; If not, see + * http://www.gnu.org/licenses/gpl-2.0.html * * GPL HEADER END */ @@ -27,7 +23,7 @@ * Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. * - * Copyright (c) 2011, 2012, Whamcloud, Inc. + * Copyright (c) 2011, 2015, Intel Corporation. */ /* * This file is part of Lustre, http://www.lustre.org/ @@ -45,9 +41,10 @@ #include #include -#include + +#include "osd_dynlocks.h" /* - * linux/include/linux/osd_iam.h + * osd_iam.h */ #ifndef CLASSERT #define CLASSERT(cond) do {switch(42) {case (cond): case 0: break;}} while (0) @@ -91,7 +88,6 @@ enum { DX_FMT_NAME_LEN = 16, }; -#ifdef __KERNEL__ /* * Debugging. @@ -482,12 +478,10 @@ struct iam_container { /* * read-write lock protecting index consistency. */ - cfs_rw_semaphore_t ic_sem; + struct rw_semaphore ic_sem; struct dynlock ic_tree_lock; - /* - * Protect ic_idle_bh - */ - cfs_semaphore_t ic_idle_sem; + /* Protect ic_idle_bh */ + struct mutex ic_idle_mutex; /* * BH for idle blocks */ @@ -937,7 +931,7 @@ static inline struct iam_entry *dx_node_get_entries(struct iam_path *path, static inline struct iam_ikey *iam_path_ikey(const struct iam_path *path, int nr) { - assert(0 <= nr && nr < ARRAY_SIZE(path->ip_data->ipd_key_scratch)); + LASSERT(0 <= nr && nr < ARRAY_SIZE(path->ip_data->ipd_key_scratch)); return path->ip_data->ipd_key_scratch[nr]; } @@ -974,8 +968,6 @@ int dx_index_is_compat(struct iam_path *path); int ldiskfs_htree_next_block(struct inode *dir, __u32 hash, struct iam_path *path, __u32 *start_hash); -struct buffer_head *ldiskfs_append(handle_t *handle, struct inode *inode, - u32 *block, int *err); int split_index_node(handle_t *handle, struct iam_path *path, struct dynlock_handle **lh); struct ldiskfs_dir_entry_2 *split_entry(struct inode *dir, @@ -1024,7 +1016,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 { @@ -1042,9 +1034,9 @@ static inline void iam_lock_bh(struct buffer_head volatile *bh) { DX_DEVAL(iam_lock_stats.dls_bh_lock++); #ifdef CONFIG_SMP - while (cfs_test_and_set_bit(BH_DXLock, &bh->b_state)) { - DX_DEVAL(iam_lock_stats.dls_bh_busy++); - while (cfs_test_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(); } #endif @@ -1053,8 +1045,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 } @@ -1097,7 +1088,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); @@ -1134,7 +1125,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