X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=lustre%2Fllite%2Fremote_perm.c;h=2789412011a03cf9fecc157f51d3102beddac9ad;hb=fcd45488711ac7341eef2a1bed9c7a8021c57436;hp=8cc8c65cf327fd25cdf05433009f01d74becbd71;hpb=580c1e0017296ea7a25f6f5f8aa8022f713ae762;p=fs%2Flustre-release.git diff --git a/lustre/llite/remote_perm.c b/lustre/llite/remote_perm.c index 8cc8c65..2789412 100644 --- a/lustre/llite/remote_perm.c +++ b/lustre/llite/remote_perm.c @@ -27,7 +27,7 @@ * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. * - * Copyright (c) 2012, Intel Corporation. + * Copyright (c) 2012, 2014, Intel Corporation. */ /* * This file is part of Lustre, http://www.lustre.org/ @@ -46,8 +46,11 @@ #include #include #include +#include +#ifdef HAVE_UIDGID_HEADER +# include +#endif -#include #include #include #include @@ -64,7 +67,7 @@ static inline struct ll_remote_perm *alloc_ll_remote_perm(void) OBD_SLAB_ALLOC_PTR_GFP(lrp, ll_remote_perm_cachep, GFP_KERNEL); if (lrp) - CFS_INIT_HLIST_NODE(&lrp->lrp_list); + INIT_HLIST_NODE(&lrp->lrp_list); return lrp; } @@ -73,14 +76,14 @@ static inline void free_ll_remote_perm(struct ll_remote_perm *lrp) if (!lrp) return; - if (!cfs_hlist_unhashed(&lrp->lrp_list)) - cfs_hlist_del(&lrp->lrp_list); + if (!hlist_unhashed(&lrp->lrp_list)) + hlist_del(&lrp->lrp_list); OBD_SLAB_FREE(lrp, ll_remote_perm_cachep, sizeof(*lrp)); } -cfs_hlist_head_t *alloc_rmtperm_hash(void) +static struct hlist_head *alloc_rmtperm_hash(void) { - cfs_hlist_head_t *hash; + struct hlist_head *hash; int i; OBD_SLAB_ALLOC_GFP(hash, ll_rmtperm_hash_cachep, @@ -90,16 +93,17 @@ cfs_hlist_head_t *alloc_rmtperm_hash(void) return NULL; for (i = 0; i < REMOTE_PERM_HASHSIZE; i++) - CFS_INIT_HLIST_HEAD(hash + i); + INIT_HLIST_HEAD(hash + i); return hash; } -void free_rmtperm_hash(cfs_hlist_head_t *hash) +void free_rmtperm_hash(struct hlist_head *hash) { - int i; - struct ll_remote_perm *lrp; - cfs_hlist_node_t *node, *next; + int i; + struct ll_remote_perm *lrp; + struct hlist_node __maybe_unused *node; + struct hlist_node *next; if(!hash) return; @@ -121,26 +125,27 @@ static inline int remote_perm_hashfunc(uid_t uid) * MDT when client get remote permission. */ static int do_check_remote_perm(struct ll_inode_info *lli, int mask) { - cfs_hlist_head_t *head; - struct ll_remote_perm *lrp; - cfs_hlist_node_t *node; - int found = 0, rc; - ENTRY; + struct hlist_head *head; + struct ll_remote_perm *lrp; + struct hlist_node __maybe_unused *node; + int found = 0, rc; + ENTRY; if (!lli->lli_remote_perms) RETURN(-ENOENT); - head = lli->lli_remote_perms + remote_perm_hashfunc(current_uid()); + head = lli->lli_remote_perms + + remote_perm_hashfunc(from_kuid(&init_user_ns, current_uid())); spin_lock(&lli->lli_lock); cfs_hlist_for_each_entry(lrp, node, head, lrp_list) { - if (lrp->lrp_uid != current_uid()) + if (lrp->lrp_uid != from_kuid(&init_user_ns, current_uid())) continue; - if (lrp->lrp_gid != current_gid()) + if (lrp->lrp_gid != from_kgid(&init_user_ns, current_gid())) continue; - if (lrp->lrp_fsuid != current_fsuid()) + if (lrp->lrp_fsuid != from_kuid(&init_user_ns, current_fsuid())) continue; - if (lrp->lrp_fsgid != current_fsgid()) + if (lrp->lrp_fsgid != from_kgid(&init_user_ns, current_fsgid())) continue; found = 1; break; @@ -161,11 +166,11 @@ out: int ll_update_remote_perm(struct inode *inode, struct mdt_remote_perm *perm) { - struct ll_inode_info *lli = ll_i2info(inode); - struct ll_remote_perm *lrp = NULL, *tmp = NULL; - cfs_hlist_head_t *head, *perm_hash = NULL; - cfs_hlist_node_t *node; - ENTRY; + struct ll_inode_info *lli = ll_i2info(inode); + struct ll_remote_perm *lrp = NULL, *tmp = NULL; + struct hlist_head *head, *perm_hash = NULL; + struct hlist_node __maybe_unused *node; + ENTRY; LASSERT(ll_i2sbi(inode)->ll_flags & LL_SBI_RMT_CLIENT); @@ -234,7 +239,7 @@ again: lrp->lrp_gid = perm->rp_gid; lrp->lrp_fsuid = perm->rp_fsuid; lrp->lrp_fsgid = perm->rp_fsgid; - cfs_hlist_add_head(&lrp->lrp_list, head); + hlist_add_head(&lrp->lrp_list, head); } lli->lli_rmtperm_time = cfs_time_current(); spin_unlock(&lli->lli_lock); @@ -308,28 +313,3 @@ int lustre_check_remote_perm(struct inode *inode, int mask) ptlrpc_req_finished(req); RETURN(rc); } - -#if 0 /* NB: remote perms can't be freed in ll_mdc_blocking_ast of UPDATE lock, - * because it will fail sanity test 48. - */ -void ll_free_remote_perms(struct inode *inode) -{ - struct ll_inode_info *lli = ll_i2info(inode); - cfs_hlist_head_t *hash = lli->lli_remote_perms; - struct ll_remote_perm *lrp; - cfs_hlist_node_t *node, *next; - int i; - - LASSERT(hash); - - spin_lock(&lli->lli_lock); - - for (i = 0; i < REMOTE_PERM_HASHSIZE; i++) { - cfs_hlist_for_each_entry_safe(lrp, node, next, hash + i, - lrp_list) - free_ll_remote_perm(lrp); - } - - spin_unlock(&lli->lli_lock); -} -#endif