struct lu_object *vvp_object_alloc(const struct lu_env *env, const struct lu_object_header *unused, struct lu_device *dev) { struct vvp_object *vob; struct lu_object *obj; OBD_SLAB_ALLOC_PTR_GFP(vob, vvp_object_kmem, GFP_NOFS); if (vob != NULL) { struct cl_object_header *hdr; obj = &vob->vob_cl.co_lu; hdr = &vob->vob_header; cl_object_header_init(hdr); hdr->coh_page_bufsize = cfs_size_round(sizeof(struct cl_page)); lu_object_init(obj, &hdr->coh_lu, dev); lu_object_add_top(&hdr->coh_lu, obj); vob->vob_cl.co_ops = &vvp_ops; obj->lo_ops = &vvp_lu_obj_ops; } else obj = NULL; return obj; }
struct lu_object *osc_object_alloc(const struct lu_env *env, const struct lu_object_header *unused, struct lu_device *dev) { struct osc_object *osc; struct lu_object *obj; OBD_SLAB_ALLOC_PTR_GFP(osc, osc_object_kmem, GFP_NOFS); if (osc != NULL) { obj = osc2lu(osc); lu_object_init(obj, NULL, dev); osc->oo_cl.co_ops = &osc_ops; obj->lo_ops = &osc_lu_obj_ops; } else obj = NULL; return obj; }
struct lu_object *osc_object_alloc(const struct lu_env *env, const struct lu_object_header *unused, struct lu_device *dev) { struct osc_object *osc; struct lu_object *obj; osc = kmem_cache_zalloc(osc_object_kmem, GFP_NOFS); if (osc) { obj = osc2lu(osc); lu_object_init(obj, NULL, dev); osc->oo_cl.co_ops = &osc_ops; obj->lo_ops = &osc_lu_obj_ops; } else { obj = NULL; } return obj; }
struct lu_object *lovsub_object_alloc(const struct lu_env *env, const struct lu_object_header *unused, struct lu_device *dev) { struct lovsub_object *los; struct lu_object *obj; OBD_SLAB_ALLOC_PTR_GFP(los, lovsub_object_kmem, GFP_NOFS); if (los != NULL) { struct cl_object_header *hdr; obj = lovsub2lu(los); hdr = &los->lso_header; cl_object_header_init(hdr); lu_object_init(obj, &hdr->coh_lu, dev); lu_object_add_top(&hdr->coh_lu, obj); los->lso_cl.co_ops = &lovsub_ops; obj->lo_ops = &lovsub_lu_obj_ops; } else obj = NULL; return obj; }
struct lu_object *lov_object_alloc(const struct lu_env *env, const struct lu_object_header *unused, struct lu_device *dev) { struct lov_object *lov; struct lu_object *obj; OBD_SLAB_ALLOC_PTR_GFP(lov, lov_object_kmem, GFP_NOFS); if (lov != NULL) { obj = lov2lu(lov); lu_object_init(obj, NULL, dev); lov->lo_cl.co_ops = &lov_ops; lov->lo_type = -1; /* invalid, to catch uninitialized type */ /* * object io operation vector (cl_object::co_iop) is installed * later in lov_object_init(), as different vectors are used * for object with different layouts. */ obj->lo_ops = &lov_lu_obj_ops; } else obj = NULL; return obj; }
struct lu_object *lovsub_object_alloc(const struct lu_env *env, const struct lu_object_header *unused, struct lu_device *dev) { struct lovsub_object *los; struct lu_object *obj; los = kmem_cache_zalloc(lovsub_object_kmem, GFP_NOFS); if (los) { struct cl_object_header *hdr; obj = lovsub2lu(los); hdr = &los->lso_header; cl_object_header_init(hdr); lu_object_init(obj, &hdr->coh_lu, dev); lu_object_add_top(&hdr->coh_lu, obj); los->lso_cl.co_ops = &lovsub_ops; obj->lo_ops = &lovsub_lu_obj_ops; } else { obj = NULL; } return obj; }