+/* possible values for mo_dom_lock */
+enum {
+ NO_DOM_LOCK_ON_OPEN = 0,
+ TRYLOCK_DOM_ON_OPEN = 1,
+ /* not used anymore, left here for compatibility */
+ ALWAYS_DOM_LOCK_ON_OPEN = 2,
+ NUM_DOM_LOCK_ON_OPEN_MODES
+};
+
+struct mdt_statfs_cache {
+ struct obd_statfs msf_osfs;
+ __u64 msf_age;
+};
+
+/* split directory automatically when sub file count exceeds 50k */
+#define DIR_SPLIT_COUNT_DEFAULT 50000
+
+/* directory auto-split allocate delta new stripes each time */
+#define DIR_SPLIT_DELTA_DEFAULT 4
+
+struct mdt_dir_restriper {
+ struct lu_env mdr_env;
+ struct lu_context mdr_session;
+ struct task_struct *mdr_task;
+ /* lock for below fields */
+ spinlock_t mdr_lock;
+ /* auto split when plain dir/shard sub files exceed threshold */
+ u64 mdr_dir_split_count;
+ /* auto split growth delta */
+ u32 mdr_dir_split_delta;
+ /* directories to split */
+ struct list_head mdr_auto_splitting;
+ /* directories under which sub files are migrating */
+ struct list_head mdr_migrating;
+ /* directories waiting to update layout after migration */
+ struct list_head mdr_updating;
+ /* time to update directory layout after migration */
+ time64_t mdr_update_time;
+ /* lum used in split/migrate/layout_change */
+ union lmv_mds_md mdr_lmv;
+ /* page used in readdir */
+ struct page *mdr_page;
+};
+