Whamcloud - gitweb
b=13499
[fs/lustre-release.git] / lustre / osd / osd_handler.c
index ccf33ee..37efb19 100644 (file)
@@ -656,7 +656,7 @@ static struct thandle *osd_trans_start(const struct lu_env *env,
                 RETURN(ERR_PTR(hook_res));
 
         if (osd_param_is_sane(dev, p)) {
-                OBD_ALLOC_GFP(oh, sizeof *oh, GFP_NOFS);
+                OBD_ALLOC_GFP(oh, sizeof *oh, CFS_ALLOC_IO);
                 if (oh != NULL) {
                         /*
                          * XXX temporary stuff. Some abstraction layer should
@@ -1063,8 +1063,10 @@ static void osd_inode_setattr(const struct lu_env *env,
                 inode->i_ctime  = *osd_inode_time(env, inode, attr->la_ctime);
         if (bits & LA_MTIME)
                 inode->i_mtime  = *osd_inode_time(env, inode, attr->la_mtime);
-        if (bits & LA_SIZE)
-                LDISKFS_I(inode)->i_disksize = inode->i_size = attr->la_size;
+        if (bits & LA_SIZE) {
+                LDISKFS_I(inode)->i_disksize = attr->la_size;
+                i_size_write(inode, attr->la_size);
+        }
         if (bits & LA_BLOCKS)
                 inode->i_blocks = attr->la_blocks;
         if (bits & LA_MODE)
@@ -2487,7 +2489,7 @@ static void osd_inode_getattr(const struct lu_env *env,
         attr->la_mtime      = LTIME_S(inode->i_mtime);
         attr->la_ctime      = LTIME_S(inode->i_ctime);
         attr->la_mode       = inode->i_mode;
-        attr->la_size       = inode->i_size;
+        attr->la_size       = i_size_read(inode);
         attr->la_blocks     = inode->i_blocks;
         attr->la_uid        = inode->i_uid;
         attr->la_gid        = inode->i_gid;