Whamcloud - gitweb
LU-10994 clio: remove cpl_obj 02/47402/5
authorJohn L. Hammond <jhammond@whamcloud.com>
Thu, 19 May 2022 18:29:58 +0000 (13:29 -0500)
committerOleg Drokin <green@whamcloud.com>
Mon, 12 Sep 2022 02:55:53 +0000 (02:55 +0000)
Remove cpl_obj from struct cl_page_slice. This member is only used in
the osc layer and struct osc_page already contains a pointer to the
osc_object.

Signed-off-by: John L. Hammond <jhammond@whamcloud.com>
Change-Id: I6451aa50ff0e8db67f1c6f4f7edbde4fa8d36c5b
Reviewed-on: https://review.whamcloud.com/47402
Reviewed-by: Patrick Farrell <pfarrell@whamcloud.com>
Reviewed-by: Bobi Jam <bobijam@hotmail.com>
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: James Simmons <jsimmons@infradead.org>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
lustre/include/cl_object.h
lustre/include/lustre_osc.h
lustre/obdclass/cl_page.c
lustre/osc/osc_cache.c
lustre/osc/osc_page.c

index b8b3c51..278db69 100644 (file)
@@ -793,11 +793,6 @@ struct cl_page {
  */
 struct cl_page_slice {
         struct cl_page                  *cpl_page;
-        /**
-         * Object slice corresponding to this page slice. Immutable after
-         * creation.
-         */
-        struct cl_object                *cpl_obj;
         const struct cl_page_operations *cpl_ops;
 };
 
index 5c3a157..c011a09 100644 (file)
@@ -846,6 +846,11 @@ static inline pgoff_t osc_index(struct osc_page *opg)
        return opg->ops_oap.oap_obj_off >> PAGE_SHIFT;
 }
 
+static inline struct osc_object *osc_page_object(struct osc_page *ops)
+{
+       return ops->ops_oap.oap_obj;
+}
+
 static inline struct cl_page *oap2cl_page(struct osc_async_page *oap)
 {
        return oap2osc(oap)->ops_cl.cpl_page;
index 5ce6759..cf84cc9 100644 (file)
@@ -1202,7 +1202,6 @@ void cl_page_slice_add(struct cl_page *cl_page, struct cl_page_slice *slice,
        LASSERT(cl_page->cp_layer_count < CP_MAX_LAYER);
        LASSERT(offset < (1 << sizeof(cl_page->cp_layer_offset[0]) * 8));
        cl_page->cp_layer_offset[cl_page->cp_layer_count++] = offset;
-       slice->cpl_obj  = obj;
        slice->cpl_ops  = ops;
        slice->cpl_page = cl_page;
 
index d8be376..fece8dc 100644 (file)
@@ -1271,7 +1271,7 @@ static int osc_refresh_count(const struct lu_env *env,
 {
        struct osc_page  *opg = oap2osc_page(oap);
        pgoff_t index = osc_index(oap2osc(oap));
-       struct cl_object *obj;
+       struct cl_object *obj = osc2cl(osc_page_object(opg));
        struct cl_attr   *attr = &osc_env_info(env)->oti_attr;
        int result;
        loff_t kms;
@@ -1279,7 +1279,6 @@ static int osc_refresh_count(const struct lu_env *env,
        /* readpage queues with _COUNT_STABLE, shouldn't get here. */
        LASSERT(!(cmd & OBD_BRW_READ));
        LASSERT(opg != NULL);
-       obj = opg->ops_cl.cpl_obj;
 
        cl_object_attr_lock(obj);
        result = cl_object_attr_get(env, obj, attr);
@@ -1323,7 +1322,7 @@ static int osc_completion(const struct lu_env *env, struct osc_async_page *oap,
 
        /* statistic */
        if (rc == 0 && srvlock) {
-               struct lu_device *ld    = opg->ops_cl.cpl_obj->co_lu.lo_dev;
+               struct lu_device *ld = osc_page_object(opg)->oo_cl.co_lu.lo_dev;
                struct osc_stats *stats = &lu2osc_dev(ld)->od_stats;
                size_t bytes = oap->oap_count;
 
@@ -2512,7 +2511,7 @@ int osc_flush_async_page(const struct lu_env *env, struct cl_io *io,
                         struct osc_page *ops)
 {
        struct osc_extent *ext   = NULL;
-       struct osc_object *obj   = cl2osc(ops->ops_cl.cpl_obj);
+       struct osc_object *obj   = osc_page_object(ops);
        struct cl_page    *cp    = ops->ops_cl.cpl_page;
        pgoff_t            index = osc_index(ops);
        struct osc_async_page *oap = &ops->ops_oap;
index fd4c1f3..1c255d3 100644 (file)
@@ -81,7 +81,7 @@ static void osc_page_transfer_put(const struct lu_env *env,
 static void osc_page_transfer_add(const struct lu_env *env,
                                   struct osc_page *opg, enum cl_req_type crt)
 {
-       struct osc_object *obj = cl2osc(opg->ops_cl.cpl_obj);
+       struct osc_object *obj = osc_page_object(opg);
 
        osc_lru_use(osc_cli(obj), opg);
 }
@@ -124,7 +124,7 @@ static int osc_page_print(const struct lu_env *env,
 {
        struct osc_page *opg = cl2osc_page(slice);
        struct osc_async_page *oap = &opg->ops_oap;
-       struct osc_object *obj = cl2osc(slice->cpl_obj);
+       struct osc_object *obj = osc_page_object(opg);
        struct client_obd *cli = &osc_export(obj)->exp_obd->u.cli;
 
        return (*printer)(env, cookie, LUSTRE_OSC_NAME"-page@%p %lu: "
@@ -170,7 +170,7 @@ static void osc_page_delete(const struct lu_env *env,
                            const struct cl_page_slice *slice)
 {
        struct osc_page   *opg = cl2osc_page(slice);
-       struct osc_object *obj = cl2osc(opg->ops_cl.cpl_obj);
+       struct osc_object *obj = osc_page_object(opg);
        int rc;
 
        ENTRY;
@@ -238,7 +238,7 @@ static void osc_page_touch(const struct lu_env *env,
                          const struct cl_page_slice *slice, size_t to)
 {
        struct osc_page *opg = cl2osc_page(slice);
-       struct cl_object *obj = opg->ops_cl.cpl_obj;
+       struct cl_object *obj = osc2cl(osc_page_object(opg));
 
        osc_page_touch_at(env, obj, osc_index(opg), to);
 }