Whamcloud - gitweb
LU-3556 osd-ldiskfs: remove dependency on mdd module
[fs/lustre-release.git] / lustre / include / lustre_capa.h
index 6e0873a..b665168 100644 (file)
@@ -26,6 +26,8 @@
 /*
  * 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/
@@ -83,13 +85,13 @@ struct obd_capa {
         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 {
@@ -175,9 +177,9 @@ typedef int (* renew_capa_cb_t)(struct obd_capa *, struct lustre_capa *);
 
 /* 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);
@@ -205,7 +207,7 @@ static inline struct obd_capa *alloc_capa(int site)
 
         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);
@@ -296,14 +298,31 @@ struct filter_capa_key {
         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_ */