From: Mr NeilBrown Date: Mon, 27 Apr 2020 05:31:55 +0000 (+1000) Subject: LU-6142 lov: convert container_of0() calls. X-Git-Tag: 2.13.55~66 X-Git-Url: https://git.whamcloud.com/?a=commitdiff_plain;h=8b11e37f019ca5eddd977974dd496a8f09f58887;p=fs%2Flustre-release.git LU-6142 lov: convert container_of0() calls. Most calls to container_of0() in lustre/lov/ are preceded by an LINVRNT() which assures us that the pointer is valid, so container_of() can be used instead. Only in lov2obd() is there not context, so that call is changed to use container_of_safe() Signed-off-by: Mr NeilBrown Change-Id: I8b3ccc8f0ac1a32122f043e8feec078fcfe2452b Reviewed-on: https://review.whamcloud.com/38382 Tested-by: jenkins Tested-by: Maloo Reviewed-by: James Simmons Reviewed-by: Arshad Hussain Reviewed-by: Oleg Drokin --- diff --git a/lustre/lov/lov_cl_internal.h b/lustre/lov/lov_cl_internal.h index f899c11..083b5ba 100644 --- a/lustre/lov/lov_cl_internal.h +++ b/lustre/lov/lov_cl_internal.h @@ -697,8 +697,8 @@ static inline struct lu_device *lov2lu_dev(struct lov_device *lov) static inline struct lov_device *lu2lov_dev(const struct lu_device *d) { - LINVRNT(d->ld_type == &lov_device_type); - return container_of0(d, struct lov_device, ld_cl.cd_lu_dev); + LINVRNT(d->ld_type == &lov_device_type); + return container_of(d, struct lov_device, ld_cl.cd_lu_dev); } static inline struct cl_device *lovsub2cl_dev(struct lovsub_device *lovsub) @@ -713,14 +713,14 @@ static inline struct lu_device *lovsub2lu_dev(struct lovsub_device *lovsub) static inline struct lovsub_device *lu2lovsub_dev(const struct lu_device *d) { - LINVRNT(d->ld_type == &lovsub_device_type); - return container_of0(d, struct lovsub_device, acid_cl.cd_lu_dev); + LINVRNT(d->ld_type == &lovsub_device_type); + return container_of(d, struct lovsub_device, acid_cl.cd_lu_dev); } static inline struct lovsub_device *cl2lovsub_dev(const struct cl_device *d) { - LINVRNT(d->cd_lu_dev.ld_type == &lovsub_device_type); - return container_of0(d, struct lovsub_device, acid_cl); + LINVRNT(d->cd_lu_dev.ld_type == &lovsub_device_type); + return container_of(d, struct lovsub_device, acid_cl); } static inline struct lu_object *lov2lu(struct lov_object *lov) @@ -735,48 +735,48 @@ static inline struct cl_object *lov2cl(struct lov_object *lov) static inline struct lov_object *lu2lov(const struct lu_object *obj) { - LINVRNT(lov_is_object(obj)); - return container_of0(obj, struct lov_object, lo_cl.co_lu); + LINVRNT(lov_is_object(obj)); + return container_of(obj, struct lov_object, lo_cl.co_lu); } static inline struct lov_object *cl2lov(const struct cl_object *obj) { - LINVRNT(lov_is_object(&obj->co_lu)); - return container_of0(obj, struct lov_object, lo_cl); + LINVRNT(lov_is_object(&obj->co_lu)); + return container_of(obj, struct lov_object, lo_cl); } static inline struct lu_object *lovsub2lu(struct lovsub_object *los) { - return &los->lso_cl.co_lu; + return &los->lso_cl.co_lu; } static inline struct cl_object *lovsub2cl(struct lovsub_object *los) { - return &los->lso_cl; + return &los->lso_cl; } static inline struct lovsub_object *cl2lovsub(const struct cl_object *obj) { - LINVRNT(lovsub_is_object(&obj->co_lu)); - return container_of0(obj, struct lovsub_object, lso_cl); + LINVRNT(lovsub_is_object(&obj->co_lu)); + return container_of(obj, struct lovsub_object, lso_cl); } static inline struct lovsub_object *lu2lovsub(const struct lu_object *obj) { - LINVRNT(lovsub_is_object(obj)); - return container_of0(obj, struct lovsub_object, lso_cl.co_lu); + LINVRNT(lovsub_is_object(obj)); + return container_of(obj, struct lovsub_object, lso_cl.co_lu); } static inline struct lov_lock *cl2lov_lock(const struct cl_lock_slice *slice) { - LINVRNT(lov_is_object(&slice->cls_obj->co_lu)); - return container_of(slice, struct lov_lock, lls_cl); + LINVRNT(lov_is_object(&slice->cls_obj->co_lu)); + return container_of(slice, struct lov_lock, lls_cl); } static inline struct lov_page *cl2lov_page(const struct cl_page_slice *slice) { - LINVRNT(lov_is_object(&slice->cpl_obj->co_lu)); - return container_of0(slice, struct lov_page, lps_cl); + LINVRNT(lov_is_object(&slice->cpl_obj->co_lu)); + return container_of(slice, struct lov_page, lps_cl); } static inline struct lov_io *cl2lov_io(const struct lu_env *env, diff --git a/lustre/lov/lov_internal.h b/lustre/lov/lov_internal.h index 8e47092..d7ca81f 100644 --- a/lustre/lov/lov_internal.h +++ b/lustre/lov/lov_internal.h @@ -369,7 +369,7 @@ static inline bool lov_oinfo_is_dummy(const struct lov_oinfo *loi) static inline struct obd_device *lov2obd(const struct lov_obd *lov) { - return container_of0(lov, struct obd_device, u.lov); + return container_of_safe(lov, struct obd_device, u.lov); } static inline void lov_lsm2layout(struct lov_stripe_md *lsm,