* repeatedly, until no new objects are created.
*
*/
+
+ /* Initialize the devices after allocation
+ * called from top device, when all layers are linked */
+ int (*ldo_device_init)(struct lu_device *, char *);
+ void (*ldo_device_fini)(struct lu_device *);
+
/*
* Allocate lower-layer parts of the object by calling
* ->ldo_object_alloc() of the corresponding underlying device.
struct dt_device;
struct dt_device_operations {
+ int (*dt_statfs)(struct dt_device *dev, struct kstatfs *sfs);
void (*dt_object_lock)(struct dt_object *dt, enum dt_lock_mode mode);
void (*dt_object_unlock)(struct dt_object *dt, enum dt_lock_mode mode);
struct thandle *(*dt_trans_start)(struct dt_device *dev,
struct dt_device {
struct lu_device dd_lu_dev;
struct dt_device_operations *dd_ops;
+ struct lustre_mount_info *dd_lmi;
};
struct txn_param {
struct md_device_operations {
int (*mdo_root_get)(struct md_device *m, struct lu_fid *f);
+ int (*mdo_statfs)(struct md_device *m, struct kstatfs *sfs);
int (*mdo_mkdir)(struct md_object *obj, const char *name,
struct md_object *child);
return container_of(d, struct md_device, md_lu_dev);
}
+static inline struct lu_device *md2lu_dev(struct md_device *d)
+{
+ return &d->md_lu_dev;
+}
+
static inline struct md_object *lu2md(struct lu_object *o)
{
LASSERT(lu_device_is_md(o->lo_dev));