X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=blobdiff_plain;f=lustre%2Finclude%2Fdt_object.h;h=9e9f1db63940ddf0ef39d5407412bfea2daf00b2;hp=0c82235691a3cde9d82996345aa0bfb00ae14ec6;hb=e2ac6e1eaa108eef3493837e9bd881629582ea1d;hpb=6e9b8f592bfc4f51141e2c6bff663c079fcd2c1b diff --git a/lustre/include/dt_object.h b/lustre/include/dt_object.h index 0c82235..9e9f1db 100644 --- a/lustre/include/dt_object.h +++ b/lustre/include/dt_object.h @@ -133,7 +133,8 @@ struct dt_device_operations { */ int (*dt_statfs)(const struct lu_env *env, struct dt_device *dev, - struct obd_statfs *osfs); + struct obd_statfs *osfs, + struct obd_statfs_info *info); /** * Create transaction. @@ -254,6 +255,13 @@ struct dt_device_operations { struct dt_device_param *param); /** + * Return device's super block. + * + * \param[in] dev dt device + */ + struct super_block *(*dt_mnt_sb_get)(const struct dt_device *dev); + + /** * Sync the device. * * Sync all the cached state (dirty buffers, pages, etc) to the @@ -339,6 +347,16 @@ enum dt_index_flags { DT_IND_RANGE = 1 << 4, }; +/* for dt_read_lock() and dt_write_lock() object lock rule */ +enum dt_object_role { + DT_SRC_PARENT, + DT_SRC_CHILD, + DT_TGT_PARENT, + DT_TGT_CHILD, + DT_TGT_ORPHAN, + DT_LASTID, +}; + /** * Features, required from index to support file system directories (mapping * names to fids). @@ -371,6 +389,8 @@ struct dt_allocation_hint { const void *dah_eadata; int dah_eadata_len; __u32 dah_mode; + int dah_append_stripes; + char *dah_append_pool; }; /** @@ -1928,7 +1948,6 @@ struct dt_txn_callback { struct thandle *txn, void *cookie); int (*dtc_txn_stop)(const struct lu_env *env, struct thandle *txn, void *cookie); - void (*dtc_txn_commit)(struct thandle *txn, void *cookie); void *dtc_cookie; __u32 dtc_tag; struct list_head dtc_linkage; @@ -1940,7 +1959,6 @@ void dt_txn_callback_del(struct dt_device *dev, struct dt_txn_callback *cb); int dt_txn_hook_start(const struct lu_env *env, struct dt_device *dev, struct thandle *txn); int dt_txn_hook_stop(const struct lu_env *env, struct thandle *txn); -void dt_txn_hook_commit(struct thandle *txn); int dt_try_as_dir(const struct lu_env *env, struct dt_object *obj); @@ -2508,13 +2526,21 @@ static inline int dt_fiemap_get(const struct lu_env *env, struct dt_object *d, return d->do_body_ops->dbo_fiemap_get(env, d, fm); } +static inline int dt_statfs_info(const struct lu_env *env, + struct dt_device *dev, + struct obd_statfs *osfs, + struct obd_statfs_info *info) +{ + LASSERT(dev); + LASSERT(dev->dd_ops); + LASSERT(dev->dd_ops->dt_statfs); + return dev->dd_ops->dt_statfs(env, dev, osfs, info); +} + static inline int dt_statfs(const struct lu_env *env, struct dt_device *dev, - struct obd_statfs *osfs) + struct obd_statfs *osfs) { - LASSERT(dev); - LASSERT(dev->dd_ops); - LASSERT(dev->dd_ops->dt_statfs); - return dev->dd_ops->dt_statfs(env, dev, osfs); + return dt_statfs_info(env, dev, osfs, NULL); } static inline int dt_root_get(const struct lu_env *env, struct dt_device *dev, @@ -2536,6 +2562,16 @@ static inline void dt_conf_get(const struct lu_env *env, return dev->dd_ops->dt_conf_get(env, dev, param); } +static inline struct super_block *dt_mnt_sb_get(const struct dt_device *dev) +{ + LASSERT(dev); + LASSERT(dev->dd_ops); + if (dev->dd_ops->dt_mnt_sb_get) + return dev->dd_ops->dt_mnt_sb_get(dev); + + return ERR_PTR(-EOPNOTSUPP); +} + static inline int dt_sync(const struct lu_env *env, struct dt_device *dev) { LASSERT(dev);