Whamcloud - gitweb
b=21551 holding ->lli_size_sem to update inode size
[fs/lustre-release.git] / lustre / lclient / lcommon_cl.c
index 28e5ba9..1bb57b3 100644 (file)
@@ -300,7 +300,7 @@ static struct lu_env *ccc_inode_fini_env = NULL;
  * A mutex serializing calls to slp_inode_fini() under extreme memory
  * pressure, when environments cannot be allocated.
  */
-static DEFINE_MUTEX(ccc_inode_fini_guard);
+static CFS_DEFINE_MUTEX(ccc_inode_fini_guard);
 static int dummy_refcheck;
 
 int ccc_global_init(struct lu_device_type *device_type)
@@ -682,7 +682,7 @@ void ccc_lock_state(const struct lu_env *env,
                 if (rc == 0) {
                         if (lock->cll_descr.cld_start == 0 &&
                             lock->cll_descr.cld_end == CL_PAGE_EOF) {
-                                cl_isize_write(inode, attr->cat_kms);
+                                cl_isize_write_nolock(inode, attr->cat_kms);
                                 CDEBUG(D_INODE, DFID" updating i_size %llu\n",
                                        PFID(lu_object_fid(&obj->co_lu)),
                                        (__u64)cl_isize_read(inode));
@@ -932,9 +932,9 @@ int ccc_prep_size(const struct lu_env *env, struct cl_object *obj,
                          */
                         if (cl_isize_read(inode) < kms) {
                                 if (vfslock)
-                                        cl_isize_write(inode, kms);
-                                else
                                         cl_isize_write_nolock(inode, kms);
+                                else
+                                        cl_isize_write(inode, kms);
                         }
                 }
         }
@@ -1249,7 +1249,7 @@ void cl_inode_fini(struct inode *inode)
                 env = cl_env_get(&refcheck);
                 emergency = IS_ERR(env);
                 if (emergency) {
-                        mutex_lock(&ccc_inode_fini_guard);
+                        cfs_mutex_lock(&ccc_inode_fini_guard);
                         LASSERT(ccc_inode_fini_env != NULL);
                         cl_env_implant(ccc_inode_fini_env, &refcheck);
                         env = ccc_inode_fini_env;
@@ -1265,7 +1265,7 @@ void cl_inode_fini(struct inode *inode)
                 lli->lli_clob = NULL;
                 if (emergency) {
                         cl_env_unplant(ccc_inode_fini_env, &refcheck);
-                        mutex_unlock(&ccc_inode_fini_guard);
+                        cfs_mutex_unlock(&ccc_inode_fini_guard);
                 } else
                         cl_env_put(env, &refcheck);
                 cl_env_reexit(cookie);