Whamcloud - gitweb
LU-4603 lmv: a few fixes about readdir of striped dir.
[fs/lustre-release.git] / lustre / include / obd.h
index 6b81564..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;
@@ -979,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;
 
@@ -1059,9 +1068,9 @@ struct obd_ops {
                          struct obd_export *exp, enum lu_cli_type type);
        int (*o_fid_fini)(struct obd_device *obd);
 
-        /* Allocate new fid according to passed @hint. */
-        int (*o_fid_alloc)(struct obd_export *exp, struct lu_fid *fid,
-                           struct md_op_data *op_data);
+       /* Allocate new fid according to passed @hint. */
+       int (*o_fid_alloc)(const struct lu_env *env, struct obd_export *exp,
+                          struct lu_fid *fid, struct md_op_data *op_data);
 
         /*
          * Object with @fid is getting deleted, we may want to do something
@@ -1445,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 */