Whamcloud - gitweb
LU-10232 lov: call cl_object_attr_get under cl_attr lock 86/30586/2
authorMikhail Pershin <mike.pershin@intel.com>
Sun, 12 Nov 2017 21:20:26 +0000 (00:20 +0300)
committerJohn L. Hammond <john.hammond@intel.com>
Thu, 4 Jan 2018 17:51:44 +0000 (17:51 +0000)
cl_object_attr_get() must be called under cl_object_attr_lock
get. There is place in lov_getstripe where it is called
without that lock.

Lustre-change: https://review.whamcloud.com/30052
Lustre-commit: 80515fa15ee76fb0174fd3be80c4a113a8d3c875

Signed-off-by: Mikhail Pershin <mike.pershin@intel.com>
Change-Id: Ia0a2322ba4ff0ff4affb081375cb108fbf2988c4
Reviewed-by: Fan Yong <fan.yong@intel.com>
Signed-off-by: Minh Diep <minh.diep@intel.com>
Reviewed-on: https://review.whamcloud.com/30586
Tested-by: Jenkins
Tested-by: Maloo <hpdd-maloo@intel.com>
Reviewed-by: John L. Hammond <john.hammond@intel.com>
lustre/lov/lov_pack.c

index bdcf146..f7a14c3 100644 (file)
@@ -419,7 +419,9 @@ int lov_getstripe(const struct lu_env *env, struct lov_object *obj,
 
                        attr.cat_size = 0;
                        cl_obj = cl_object_top(&obj->lo_cl);
+                       cl_object_attr_lock(cl_obj);
                        cl_object_attr_get(env, cl_obj, &attr);
+                       cl_object_attr_unlock(cl_obj);
 
                        /* return the last instantiated component if file size
                         * is non-zero, otherwise, return the last component.*/