Whamcloud - gitweb
LU-1408 debug: initialize debug_msg_data if needed
[fs/lustre-release.git] / lustre / include / lu_object.h
index 553022d..94c0b47 100644 (file)
@@ -398,17 +398,6 @@ static inline int lu_device_is_md(const struct lu_device *d)
 }
 
 /**
- * Flags for the object layers.
- */
-enum lu_object_flags {
-        /**
-         * this flags is set if lu_object_operations::loo_object_init() has
-         * been called for this layer. Used by lu_object_alloc().
-         */
-        LU_OBJECT_ALLOCATED = (1 << 0)
-};
-
-/**
  * Common object attributes.
  */
 struct lu_attr {
@@ -485,14 +474,6 @@ struct lu_object {
          * Linkage into list of all layers.
          */
         cfs_list_t                         lo_linkage;
-        /**
-         * Depth. Top level layer depth is 0.
-         */
-        int                                lo_depth;
-       /**
-        * Flags from enum lu_object_flags.
-        */
-       __u32                                   lo_flags;
        /**
         * Link to the device, for debugging.
         */
@@ -509,7 +490,7 @@ enum lu_object_header_flags {
        /**
         * Mark this object has already been taken out of cache.
         */
-       LU_OBJECT_UNHASHED = 1
+       LU_OBJECT_UNHASHED = 1,
 };
 
 enum lu_object_header_attr {
@@ -574,28 +555,28 @@ struct lu_object_header {
 struct fld;
 
 struct lu_site_bkt_data {
-        /**
-         * number of busy object on this bucket
-         */
-        long                      lsb_busy;
-        /**
-         * LRU list, updated on each access to object. Protected by
-         * bucket lock of lu_site::ls_obj_hash.
-         *
-         * "Cold" end of LRU is lu_site::ls_lru.next. Accessed object are
-         * moved to the lu_site::ls_lru.prev (this is due to the non-existence
-         * of list_for_each_entry_safe_reverse()).
-         */
-        cfs_list_t                lsb_lru;
-        /**
-         * Wait-queue signaled when an object in this site is ultimately
-         * destroyed (lu_object_free()). It is used by lu_object_find() to
-         * wait before re-trying when object in the process of destruction is
-         * found in the hash table.
-         *
-         * \see htable_lookup().
-         */
-        cfs_waitq_t               lsb_marche_funebre;
+       /**
+        * number of busy object on this bucket
+        */
+       long                      lsb_busy;
+       /**
+        * LRU list, updated on each access to object. Protected by
+        * bucket lock of lu_site::ls_obj_hash.
+        *
+        * "Cold" end of LRU is lu_site::ls_lru.next. Accessed object are
+        * moved to the lu_site::ls_lru.prev (this is due to the non-existence
+        * of list_for_each_entry_safe_reverse()).
+        */
+       cfs_list_t                lsb_lru;
+       /**
+        * Wait-queue signaled when an object in this site is ultimately
+        * destroyed (lu_object_free()). It is used by lu_object_find() to
+        * wait before re-trying when object in the process of destruction is
+        * found in the hash table.
+        *
+        * \see htable_lookup().
+        */
+       wait_queue_head_t               lsb_marche_funebre;
 };
 
 enum {
@@ -665,6 +646,11 @@ lu_site_bkt_from_fid(struct lu_site *site, struct lu_fid *fid)
         return cfs_hash_bd_extra_get(site->ls_obj_hash, &bd);
 }
 
+static inline struct seq_server_site *lu_site2seq(const struct lu_site *s)
+{
+       return s->ld_seq_site;
+}
+
 /** \name ctors
  * Constructors/destructors.
  * @{
@@ -739,6 +725,8 @@ struct lu_object *lu_object_find_at(const struct lu_env *env,
                                     struct lu_device *dev,
                                     const struct lu_fid *f,
                                     const struct lu_object_conf *conf);
+void lu_object_purge(const struct lu_env *env, struct lu_device *dev,
+                    const struct lu_fid *f);
 struct lu_object *lu_object_find_slice(const struct lu_env *env,
                                        struct lu_device *dev,
                                        const struct lu_fid *f,
@@ -802,9 +790,8 @@ int lu_cdebug_printer(const struct lu_env *env,
  */
 #define LU_OBJECT_DEBUG(mask, env, object, format, ...)                   \
 do {                                                                      \
-        LIBCFS_DEBUG_MSG_DATA_DECL(msgdata, mask, NULL);                  \
-                                                                          \
         if (cfs_cdebug_show(mask, DEBUG_SUBSYSTEM)) {                     \
+                LIBCFS_DEBUG_MSG_DATA_DECL(msgdata, mask, NULL);          \
                 lu_object_print(env, &msgdata, lu_cdebug_printer, object);\
                 CDEBUG(mask, format , ## __VA_ARGS__);                    \
         }                                                                 \
@@ -815,9 +802,8 @@ do {                                                                      \
  */
 #define LU_OBJECT_HEADER(mask, env, object, format, ...)                \
 do {                                                                    \
-        LIBCFS_DEBUG_MSG_DATA_DECL(msgdata, mask, NULL);                \
-                                                                        \
         if (cfs_cdebug_show(mask, DEBUG_SUBSYSTEM)) {                   \
+                LIBCFS_DEBUG_MSG_DATA_DECL(msgdata, mask, NULL);        \
                 lu_object_header_print(env, &msgdata, lu_cdebug_printer,\
                                        (object)->lo_header);            \
                 lu_cdebug_printer(env, &msgdata, "\n");                 \
@@ -1026,7 +1012,11 @@ enum lu_context_tag {
         /**
          * Context for local operations
          */
-        LCT_LOCAL = 1 << 7,
+       LCT_LOCAL = 1 << 7,
+       /**
+        * session for server thread
+        **/
+       LCT_SERVER_SESSION = 1 << 8,
         /**
          * Set when at least one of keys, having values in this context has
          * non-NULL lu_context_key::lct_exit() method. This is used to
@@ -1123,14 +1113,14 @@ struct lu_context_key {
          * key.
          */
         cfs_atomic_t lct_used;
-        /**
-         * Internal implementation detail: module for this key.
-         */
-        cfs_module_t *lct_owner;
-        /**
-         * References to this key. For debugging.
-         */
-        struct lu_ref  lct_reference;
+       /**
+        * Internal implementation detail: module for this key.
+        */
+       struct module *lct_owner;
+       /**
+        * References to this key. For debugging.
+        */
+       struct lu_ref  lct_reference;
 };
 
 #define LU_KEY_INIT(mod, type)                                    \
@@ -1139,7 +1129,7 @@ struct lu_context_key {
         {                                                         \
                 type *value;                                      \
                                                                   \
-                CLASSERT(CFS_PAGE_SIZE >= sizeof (*value));       \
+               CLASSERT(PAGE_CACHE_SIZE >= sizeof (*value));       \
                                                                   \
                 OBD_ALLOC_PTR(value);                             \
                 if (value == NULL)                                \
@@ -1326,7 +1316,7 @@ int lu_global_init(void);
 void lu_global_fini(void);
 
 struct lu_kmem_descr {
-        cfs_mem_cache_t **ckd_cache;
+       struct kmem_cache **ckd_cache;
         const char       *ckd_name;
         const size_t      ckd_size;
 };