Whamcloud - gitweb
LU-4603 lmv: a few fixes about readdir of striped dir.
[fs/lustre-release.git] / lustre / include / obd.h
index 6edb1d3..94f9d8c 100644 (file)
@@ -36,6 +36,9 @@
 
 #ifndef __OBD_H
 #define __OBD_H
+#ifndef __KERNEL__
+# error "userspace should not include <obd.h>"
+#endif
 
 #if defined(__linux__)
 #include <linux/obd.h>
@@ -426,14 +429,15 @@ struct lov_obd {
                                                           array */
        struct mutex            lov_lock;
        struct obd_connect_data lov_ocd;
+       struct proc_dir_entry  *targets_proc_entry;
        atomic_t                lov_refcount;
        __u32                   lov_death_row;  /* tgts scheduled to be deleted */
        __u32                   lov_tgt_size;   /* size of tgts array */
        int                     lov_connects;
        int                     lov_pool_count;
        cfs_hash_t             *lov_pools_hash_body; /* used for key access */
-       cfs_list_t              lov_pool_list;  /* used for sequential access */
-       cfs_proc_dir_entry_t   *lov_pool_proc_entry;
+       struct list_head        lov_pool_list;  /* used for sequential access */
+       struct proc_dir_entry  *lov_pool_proc_entry;
        enum lustre_sec_part    lov_sp_me;
 
        /* Cached LRU and unstable data from upper layer */
@@ -467,6 +471,7 @@ struct lmv_obd {
        struct lmv_desc         desc;
        struct obd_uuid         cluuid;
        struct obd_export       *exp;
+       struct proc_dir_entry   *targets_proc_entry;
 
        struct mutex            init_mutex;
        int                     connected;
@@ -955,6 +960,7 @@ struct md_op_data {
         __u32                   op_fsgid;
         cfs_cap_t               op_cap;
         void                   *op_data;
+       size_t                  op_data_size;
 
         /* iattr fields and blocks. */
         struct iattr            op_attr;
@@ -978,6 +984,10 @@ struct md_op_data {
        /* Used by readdir */
        __u64                   op_hash_offset;
 
+       /* The offset of dir entry among the same hash entries, which
+        * is used to resolve the hash conflict. */
+       __u32                   op_same_hash_offset;
+
        /* Used by readdir */
        __u32                   op_npages;
 
@@ -1200,15 +1210,15 @@ struct md_ops {
                        __u64, struct ptlrpc_request **);
 
        int (*m_enqueue)(struct obd_export *, struct ldlm_enqueue_info *,
+                        const union ldlm_policy_data *,
                         struct lookup_intent *, struct md_op_data *,
-                        struct lustre_handle *, void *, int,
-                        struct ptlrpc_request **, __u64);
+                        struct lustre_handle *, __u64);
 
        int (*m_getattr)(struct obd_export *, struct md_op_data *,
                         struct ptlrpc_request **);
 
        int (*m_intent_lock)(struct obd_export *, struct md_op_data *,
-                            void *, int, struct lookup_intent *, int,
+                            struct lookup_intent *,
                             struct ptlrpc_request **,
                             ldlm_blocking_callback, __u64);
 
@@ -1444,4 +1454,16 @@ static inline int cli_brw_size(struct obd_device *obd)
        return obd->u.cli.cl_max_pages_per_rpc << PAGE_CACHE_SHIFT;
 }
 
+static inline void client_adjust_max_dirty(struct client_obd *cli)
+{
+        /* initializing */
+       if (cli->cl_dirty_max <= 0)
+               cli->cl_dirty_max = OSC_MAX_DIRTY_DEFAULT * 1024 * 1024;
+       else
+               cli->cl_dirty_max = cli->cl_max_rpcs_in_flight *
+                       (cli->cl_max_pages_per_rpc << PAGE_CACHE_SHIFT);
+       if (cli->cl_dirty_max >> PAGE_CACHE_SHIFT > totalram_pages / 8)
+               cli->cl_dirty_max = totalram_pages << (PAGE_CACHE_SHIFT - 3);
+}
+
 #endif /* __OBD_H */