static inline struct dt_device *lfsck_obj2dev(struct dt_object *obj)
{
- return container_of0(obj->do_lu.lo_dev, struct dt_device, dd_lu_dev);
+ return container_of_safe(obj->do_lu.lo_dev, struct dt_device,
+ dd_lu_dev);
}
static inline struct lfsck_thread_info *
static inline struct vvp_device *lu2vvp_dev(const struct lu_device *d)
{
- return container_of0(d, struct vvp_device, vdv_cl.cd_lu_dev);
+ return container_of_safe(d, struct vvp_device, vdv_cl.cd_lu_dev);
}
static inline struct vvp_device *cl2vvp_dev(const struct cl_device *d)
{
- return container_of0(d, struct vvp_device, vdv_cl);
+ return container_of_safe(d, struct vvp_device, vdv_cl);
}
static inline struct vvp_object *cl2vvp(const struct cl_object *obj)
{
- return container_of0(obj, struct vvp_object, vob_cl);
+ return container_of_safe(obj, struct vvp_object, vob_cl);
}
static inline struct vvp_object *lu2vvp(const struct lu_object *obj)
{
- return container_of0(obj, struct vvp_object, vob_cl.co_lu);
+ return container_of_safe(obj, struct vvp_object, vob_cl.co_lu);
}
static inline struct inode *vvp_object_inode(const struct cl_object *obj)
static inline struct obd_device *lmv2obd_dev(struct lmv_obd *lmv)
{
- return container_of0(lmv, struct obd_device, u.lmv);
+ return container_of_safe(lmv, struct obd_device, u.lmv);
}
static inline struct lu_tgt_desc *
static inline struct lod_device* lu2lod_dev(struct lu_device *d)
{
LASSERT(lu_device_is_lod(d));
- return container_of0(d, struct lod_device, lod_dt_dev.dd_lu_dev);
+ return container_of_safe(d, struct lod_device, lod_dt_dev.dd_lu_dev);
}
static inline struct lu_device *lod2lu_dev(struct lod_device *d)
static inline struct lod_object *lu2lod_obj(struct lu_object *o)
{
LASSERT(ergo(o != NULL, lu_device_is_lod(o->lo_dev)));
- return container_of0(o, struct lod_object, ldo_obj.do_lu);
+ return container_of_safe(o, struct lod_object, ldo_obj.do_lu);
}
static inline struct lu_object *lod2lu_obj(struct lod_object *obj)
static inline struct mdd_device *lu2mdd_dev(struct lu_device *d)
{
- LASSERT(lu_device_is_mdd(d));
- return container_of0(d, struct mdd_device, mdd_md_dev.md_lu_dev);
+ LASSERT(lu_device_is_mdd(d));
+ return container_of_safe(d, struct mdd_device, mdd_md_dev.md_lu_dev);
}
static inline struct lu_device *mdd2lu_dev(struct mdd_device *mdd)
static inline struct mdd_object *lu2mdd_obj(struct lu_object *o)
{
- LASSERT(ergo(o != NULL, lu_device_is_mdd(o->lo_dev)));
- return container_of0(o, struct mdd_object, mod_obj.mo_lu);
+ LASSERT(ergo(o != NULL, lu_device_is_mdd(o->lo_dev)));
+ return container_of_safe(o, struct mdd_object,
+ mod_obj.mo_lu);
}
static inline struct mdd_device *mdo2mdd(struct md_object *mdo)
{
- return lu2mdd_dev(mdo->mo_lu.lo_dev);
+ return lu2mdd_dev(mdo->mo_lu.lo_dev);
}
static inline struct mdd_object *md2mdd_obj(struct md_object *mdo)
{
- return container_of0(mdo, struct mdd_object, mod_obj);
+ return container_of_safe(mdo, struct mdd_object, mod_obj);
}
static inline const
static inline struct mdt_device *mdt_dev(struct lu_device *d)
{
- return container_of0(d, struct mdt_device, mdt_lu_dev);
+ return container_of_safe(d, struct mdt_device, mdt_lu_dev);
}
static inline struct mdt_object *mdt_obj(struct lu_object *o)
{
- return container_of0(o, struct mdt_object, mot_obj);
+ return container_of_safe(o, struct mdt_object, mot_obj);
}
static inline struct dt_object *mdt_obj2dt(struct mdt_object *mo)
static inline struct mds_device *mds_dev(struct lu_device *d)
{
- return container_of0(d, struct mds_device, mds_md_dev.md_lu_dev);
+ return container_of_safe(d, struct mds_device, mds_md_dev.md_lu_dev);
}
static struct lu_device *mds_device_fini(const struct lu_env *env,
static inline struct mgs_device* lu2mgs_dev(struct lu_device *d)
{
LASSERT(lu_device_is_mgs(d));
- return container_of0(d, struct mgs_device, mgs_dt_dev.dd_lu_dev);
+ return container_of_safe(d, struct mgs_device, mgs_dt_dev.dd_lu_dev);
}
static inline struct mgs_device *exp2mgs_dev(struct obd_export *exp)
static inline struct mgs_object *lu2mgs_obj(struct lu_object *o)
{
LASSERT(ergo(o != NULL, lu_device_is_mgs(o->lo_dev)));
- return container_of0(o, struct mgs_object, mgo_obj.do_lu);
+ return container_of_safe(o, struct mgs_object, mgo_obj.do_lu);
}
static inline struct lu_object *mgs2lu_obj(struct mgs_object *obj)
static inline struct echo_srv_device *echo_srv_dev(struct lu_device *d)
{
- return container_of0(d, struct echo_srv_device, esd_dev);
+ return container_of_safe(d, struct echo_srv_device, esd_dev);
}
static inline struct obd_device *echo_srv_obd(struct echo_srv_device *esd)
*/
static inline struct echo_device *cl2echo_dev(const struct cl_device *dev)
{
- return container_of0(dev, struct echo_device, ed_cl);
+ return container_of_safe(dev, struct echo_device, ed_cl);
}
static inline struct cl_device *echo_dev2cl(struct echo_device *d)
#ifdef HAVE_SERVER_SUPPORT
static inline struct echo_md_device *lu2emd_dev(struct lu_device *d)
{
- return container_of0(d, struct echo_md_device, emd_md_dev.md_lu_dev);
+ return container_of_safe(d, struct echo_md_device,
+ emd_md_dev.md_lu_dev);
}
static inline struct lu_device *emd2lu_dev(struct echo_md_device *d)
static inline struct ofd_device *ofd_dev(struct lu_device *d)
{
- return container_of0(d, struct ofd_device, ofd_dt_dev.dd_lu_dev);
+ return container_of_safe(d, struct ofd_device, ofd_dt_dev.dd_lu_dev);
}
static inline struct obd_device *ofd_obd(struct ofd_device *ofd)
static inline struct ofd_object *ofd_obj(struct lu_object *o)
{
- return container_of0(o, struct ofd_object, ofo_obj.do_lu);
+ return container_of_safe(o, struct ofd_object, ofo_obj.do_lu);
}
static inline int ofd_object_exists(struct ofd_object *obj)
static inline struct lwp_device *lu2lwp_dev(struct lu_device *d)
{
- return container_of0(d, struct lwp_device, lpd_dev);
+ return container_of_safe(d, struct lwp_device, lpd_dev);
}
static inline struct lu_device *lwp2lu_dev(struct lwp_device *d)
static inline struct osp_device *lu2osp_dev(struct lu_device *d)
{
LASSERT(lu_device_is_osp(d));
- return container_of0(d, struct osp_device, opd_dt_dev.dd_lu_dev);
+ return container_of_safe(d, struct osp_device, opd_dt_dev.dd_lu_dev);
}
static inline struct lu_device *osp2lu_dev(struct osp_device *d)
static inline struct osp_device *dt2osp_dev(struct dt_device *d)
{
LASSERT(lu_device_is_osp(&d->dd_lu_dev));
- return container_of0(d, struct osp_device, opd_dt_dev);
+ return container_of_safe(d, struct osp_device, opd_dt_dev);
}
static inline struct osp_object *lu2osp_obj(struct lu_object *o)
{
LASSERT(ergo(o != NULL, lu_device_is_osp(o->lo_dev)));
- return container_of0(o, struct osp_object, opo_obj.do_lu);
+ return container_of_safe(o, struct osp_object, opo_obj.do_lu);
}
static inline struct lu_object *osp2lu_obj(struct osp_object *obj)
static inline struct osp_object *osp_obj(const struct lu_object *o)
{
LASSERT(lu_device_is_osp(o->lo_dev));
- return container_of0(o, struct osp_object, opo_obj.do_lu);
+ return container_of_safe(o, struct osp_object, opo_obj.do_lu);
}
static inline struct osp_object *dt2osp_obj(const struct dt_object *d)
/* helper routine to convert a lu_device into a qmt_device */
static inline struct qmt_device *lu2qmt_dev(struct lu_device *ld)
{
- return container_of0(lu2dt_dev(ld), struct qmt_device, qmt_dt_dev);
+ return container_of_safe(lu2dt_dev(ld), struct qmt_device, qmt_dt_dev);
}
/* helper routine to convert a qmt_device into lu_device */