/*
* Copyright (c) 2007, 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/
struct lustre_capa c_capa; /* capa */
cfs_atomic_t c_refc; /* ref count */
cfs_time_t c_expiry; /* jiffies */
- cfs_spinlock_t c_lock; /* protect capa content */
- int c_site;
+ spinlock_t c_lock; /* protect capa content */
+ int c_site;
- union {
- struct client_capa cli;
- struct target_capa tgt;
- } u;
+ union {
+ struct client_capa cli;
+ struct target_capa tgt;
+ } u;
};
enum {
/* obdclass/capa.c */
extern cfs_list_t capa_list[];
-extern cfs_spinlock_t capa_lock;
+extern spinlock_t capa_lock;
extern int capa_count[];
-extern cfs_mem_cache_t *capa_cachep;
+extern struct kmem_cache *capa_cachep;
cfs_hlist_head_t *init_capa_hash(void);
void cleanup_capa_hash(cfs_hlist_head_t *hash);
CFS_INIT_LIST_HEAD(&ocapa->c_list);
cfs_atomic_set(&ocapa->c_refc, 1);
- cfs_spin_lock_init(&ocapa->c_lock);
+ spin_lock_init(&ocapa->c_lock);
ocapa->c_site = site;
if (ocapa->c_site == CAPA_SITE_CLIENT)
CFS_INIT_LIST_HEAD(&ocapa->u.cli.lli_list);
struct lustre_capa_key k_key;
};
-enum {
- LC_ID_NONE = 0,
- LC_ID_PLAIN = 1,
- LC_ID_CONVERT = 2
+enum lc_auth_id {
+ LC_ID_NONE = 0,
+ LC_ID_PLAIN = 1,
+ LC_ID_CONVERT = 2
};
#define BYPASS_CAPA (struct lustre_capa *)ERR_PTR(-ENOENT)
+enum {
+ LU_CAPAINFO_MAX = 5
+};
+
+/** there are at most 5 FIDs in one operation, see rename,
+ * NOTE the last one is a temporary one used for is_subdir() */
+struct lu_capainfo {
+ enum lc_auth_id lci_auth;
+ __u32 lci_padding;
+ struct lu_fid lci_fid[LU_CAPAINFO_MAX];
+ struct lustre_capa *lci_capa[LU_CAPAINFO_MAX];
+};
+
+int lu_capainfo_init(void);
+void lu_capainfo_fini(void);
+struct lu_capainfo *lu_capainfo_get(const struct lu_env *env);
+
/** @} capa */
#endif /* __LINUX_CAPA_H_ */