X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=blobdiff_plain;f=lustre%2Flod%2Flod_dev.c;h=e0bf92bfa2cc63569c0e55033ba040cb5efe8e01;hp=3a4925a7eb8ca2fa6b90d1dae0dd298ec9b3791c;hb=217088f6b47c817ae543bdfba37052134c51c739;hpb=66523bca8a821ebba16f25c3b3a1ce64b906e443 diff --git a/lustre/lod/lod_dev.c b/lustre/lod/lod_dev.c index 3a4925a..e0bf92b 100644 --- a/lustre/lod/lod_dev.c +++ b/lustre/lod/lod_dev.c @@ -48,6 +48,9 @@ #include "lod_internal.h" +extern struct lu_object_operations lod_lu_obj_ops; +extern struct dt_object_operations lod_obj_ops; + /* Slab for OSD object allocation */ cfs_mem_cache_t *lod_object_kmem; @@ -65,6 +68,25 @@ static struct lu_kmem_descr lod_caches[] = { static struct lu_device *lod_device_fini(const struct lu_env *env, struct lu_device *d); +struct lu_object *lod_object_alloc(const struct lu_env *env, + const struct lu_object_header *hdr, + struct lu_device *dev) +{ + struct lu_object *lu_obj; + struct lod_object *lo; + + OBD_SLAB_ALLOC_PTR_GFP(lo, lod_object_kmem, CFS_ALLOC_IO); + if (lo == NULL) + return NULL; + + lu_obj = lod2lu_obj(lo); + dt_object_init(&lo->ldo_obj, NULL, dev); + lo->ldo_obj.do_ops = &lod_obj_ops; + lu_obj->lo_ops = &lod_lu_obj_ops; + + return lu_obj; +} + static int lod_process_config(const struct lu_env *env, struct lu_device *dev, struct lustre_cfg *lcfg) @@ -197,6 +219,7 @@ static int lod_prepare(const struct lu_env *env, struct lu_device *pdev, } const struct lu_device_operations lod_lu_ops = { + .ldo_object_alloc = lod_object_alloc, .ldo_process_config = lod_process_config, .ldo_recovery_complete = lod_recovery_complete, .ldo_prepare = lod_prepare,