X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=lustre%2Fobdclass%2Fcapa.c;h=02fb53d68a866e0ad87d67e4917c43a0ea8d908a;hb=42bedf90159bcaf0c8415f19a821ba11b2957155;hp=539910ce7d646eae5e66eca25e8692c75441f7d5;hpb=e2af7fb3c91dfb13d34d8e1b2f2df8c09621f768;p=fs%2Flustre-release.git diff --git a/lustre/obdclass/capa.c b/lustre/obdclass/capa.c index 539910c..02fb53d 100644 --- a/lustre/obdclass/capa.c +++ b/lustre/obdclass/capa.c @@ -26,6 +26,8 @@ /* * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. + * + * Copyright (c) 2012, Intel Corporation. */ /* * This file is part of Lustre, http://www.lustre.org/ @@ -65,7 +67,7 @@ cfs_mem_cache_t *capa_cachep = NULL; #ifdef __KERNEL__ /* lock for capa hash/capa_list/fo_capa_keys */ -cfs_spinlock_t capa_lock = CFS_SPIN_LOCK_UNLOCKED; +DEFINE_SPINLOCK(capa_lock); cfs_list_t capa_list[CAPA_SITE_MAX]; @@ -97,6 +99,7 @@ cfs_hlist_head_t *init_capa_hash(void) CFS_INIT_HLIST_HEAD(hash + i); return hash; } +EXPORT_SYMBOL(init_capa_hash); #ifdef __KERNEL__ static inline int capa_on_server(struct obd_capa *ocapa) @@ -116,20 +119,21 @@ static inline void capa_delete(struct obd_capa *ocapa) void cleanup_capa_hash(cfs_hlist_head_t *hash) { - int i; - cfs_hlist_node_t *pos, *next; - struct obd_capa *oc; - - cfs_spin_lock(&capa_lock); - for (i = 0; i < NR_CAPAHASH; i++) { - cfs_hlist_for_each_entry_safe(oc, pos, next, hash + i, - u.tgt.c_hash) - capa_delete(oc); - } - cfs_spin_unlock(&capa_lock); + int i; + cfs_hlist_node_t *pos, *next; + struct obd_capa *oc; + + spin_lock(&capa_lock); + for (i = 0; i < NR_CAPAHASH; i++) { + cfs_hlist_for_each_entry_safe(oc, pos, next, hash + i, + u.tgt.c_hash) + capa_delete(oc); + } + spin_unlock(&capa_lock); - OBD_FREE(hash, CFS_PAGE_SIZE); + OBD_FREE(hash, CFS_PAGE_SIZE); } +EXPORT_SYMBOL(cleanup_capa_hash); static inline int capa_hashfn(struct lu_fid *fid) { @@ -199,7 +203,7 @@ struct obd_capa *capa_add(cfs_hlist_head_t *hash, struct lustre_capa *capa) if (IS_ERR(ocapa)) return NULL; - cfs_spin_lock(&capa_lock); + spin_lock(&capa_lock); old = find_capa(capa, head, 0); if (!old) { ocapa->c_capa = *capa; @@ -210,32 +214,34 @@ struct obd_capa *capa_add(cfs_hlist_head_t *hash, struct lustre_capa *capa) capa_count[CAPA_SITE_SERVER]++; if (capa_count[CAPA_SITE_SERVER] > CAPA_HASH_SIZE) capa_delete_lru(list); - cfs_spin_unlock(&capa_lock); - return ocapa; - } else { - capa_get(old); - cfs_spin_unlock(&capa_lock); - capa_put(ocapa); - return old; - } + spin_unlock(&capa_lock); + return ocapa; + } else { + capa_get(old); + spin_unlock(&capa_lock); + capa_put(ocapa); + return old; + } } +EXPORT_SYMBOL(capa_add); struct obd_capa *capa_lookup(cfs_hlist_head_t *hash, struct lustre_capa *capa, - int alive) + int alive) { - struct obd_capa *ocapa; - - cfs_spin_lock(&capa_lock); - ocapa = find_capa(capa, hash + capa_hashfn(&capa->lc_fid), alive); - if (ocapa) { - cfs_list_move_tail(&ocapa->c_list, - &capa_list[CAPA_SITE_SERVER]); - capa_get(ocapa); - } - cfs_spin_unlock(&capa_lock); + struct obd_capa *ocapa; + + spin_lock(&capa_lock); + ocapa = find_capa(capa, hash + capa_hashfn(&capa->lc_fid), alive); + if (ocapa) { + cfs_list_move_tail(&ocapa->c_list, + &capa_list[CAPA_SITE_SERVER]); + capa_get(ocapa); + } + spin_unlock(&capa_lock); - return ocapa; + return ocapa; } +EXPORT_SYMBOL(capa_lookup); int capa_hmac(__u8 *hmac, struct lustre_capa *capa, __u8 *key) { @@ -268,6 +274,7 @@ int capa_hmac(__u8 *hmac, struct lustre_capa *capa, __u8 *key) return 0; } +EXPORT_SYMBOL(capa_hmac); int capa_encrypt_id(__u32 *d, __u32 *s, __u8 *key, int keylen) { @@ -320,6 +327,7 @@ out: ll_crypto_free_blkcipher(tfm); return rc; } +EXPORT_SYMBOL(capa_encrypt_id); int capa_decrypt_id(__u32 *d, __u32 *s, __u8 *key, int keylen) { @@ -373,14 +381,16 @@ out: ll_crypto_free_blkcipher(tfm); return rc; } +EXPORT_SYMBOL(capa_decrypt_id); #endif void capa_cpy(void *capa, struct obd_capa *ocapa) { - cfs_spin_lock(&ocapa->c_lock); - *(struct lustre_capa *)capa = ocapa->c_capa; - cfs_spin_unlock(&ocapa->c_lock); + spin_lock(&ocapa->c_lock); + *(struct lustre_capa *)capa = ocapa->c_capa; + spin_unlock(&ocapa->c_lock); } +EXPORT_SYMBOL(capa_cpy); void _debug_capa(struct lustre_capa *c, struct libcfs_debug_msg_data *msgdata, @@ -398,12 +408,3 @@ void _debug_capa(struct lustre_capa *c, va_end(args); } EXPORT_SYMBOL(_debug_capa); - -EXPORT_SYMBOL(init_capa_hash); -EXPORT_SYMBOL(cleanup_capa_hash); -EXPORT_SYMBOL(capa_add); -EXPORT_SYMBOL(capa_lookup); -EXPORT_SYMBOL(capa_hmac); -EXPORT_SYMBOL(capa_encrypt_id); -EXPORT_SYMBOL(capa_decrypt_id); -EXPORT_SYMBOL(capa_cpy);