+const struct dt_object_operations osp_md_obj_ops = {
+ .do_read_lock = osp_md_read_lock,
+ .do_write_lock = osp_md_write_lock,
+ .do_read_unlock = osp_md_read_unlock,
+ .do_write_unlock = osp_md_write_unlock,
+ .do_write_locked = osp_md_write_locked,
+ .do_declare_create = osp_md_declare_create,
+ .do_create = osp_md_create,
+ .do_declare_ref_add = osp_md_declare_ref_add,
+ .do_ref_add = osp_md_ref_add,
+ .do_declare_ref_del = osp_md_declare_ref_del,
+ .do_ref_del = osp_md_ref_del,
+ .do_declare_destroy = osp_md_declare_destroy,
+ .do_destroy = osp_md_destroy,
+ .do_ah_init = osp_md_ah_init,
+ .do_attr_get = osp_attr_get,
+ .do_declare_attr_set = osp_md_declare_attr_set,
+ .do_attr_set = osp_md_attr_set,
+ .do_xattr_get = osp_xattr_get,
+ .do_xattr_list = osp_md_xattr_list,
+ .do_declare_xattr_set = osp_declare_xattr_set,
+ .do_xattr_set = osp_xattr_set,
+ .do_declare_xattr_del = osp_declare_xattr_del,
+ .do_xattr_del = osp_xattr_del,
+ .do_index_try = osp_md_index_try,
+ .do_object_lock = osp_md_object_lock,
+ .do_object_unlock = osp_md_object_unlock,
+ .do_invalidate = osp_invalidate,
+ .do_check_stale = osp_check_stale,
+};
+
+/**
+ * Implementation of dt_body_operations::dbo_declare_write
+ *
+ * Create the osp_update_request to track the update for this OSP
+ * in the transaction.
+ *
+ * \param[in] env execution environment
+ * \param[in] dt object to be written
+ * \param[in] buf buffer to write which includes an embedded size field
+ * \param[in] pos offet in the object to start writing at
+ * \param[in] th transaction handle
+ *
+ * \retval 0 if preparation succeeds.
+ * \retval negative errno if preparation fails.
+ */
+static ssize_t osp_md_declare_write(const struct lu_env *env,
+ struct dt_object *dt,
+ const struct lu_buf *buf,
+ loff_t pos, struct thandle *th)