jfs: atomically read inode size
authorFabian Frederick <fabf@skynet.be>
Mon, 23 Jan 2017 17:50:23 +0000 (18:50 +0100)
committerDave Kleikamp <dave.kleikamp@oracle.com>
Thu, 9 Feb 2017 17:57:22 +0000 (11:57 -0600)
See i_size_read() comments in include/linux/fs.h

Signed-off-by: Fabian Frederick <fabf@skynet.be>
Signed-off-by: Dave Kleikamp <dave.kleikamp@oracle.com>
fs/jfs/resize.c
fs/jfs/super.c

index bd9b641..7ddcb44 100644 (file)
@@ -98,7 +98,7 @@ int jfs_extendfs(struct super_block *sb, s64 newLVSize, int newLogSize)
                goto out;
        }
 
-       VolumeSize = sb->s_bdev->bd_inode->i_size >> sb->s_blocksize_bits;
+       VolumeSize = i_size_read(sb->s_bdev->bd_inode) >> sb->s_blocksize_bits;
 
        if (VolumeSize) {
                if (newLVSize > VolumeSize) {
@@ -211,7 +211,7 @@ int jfs_extendfs(struct super_block *sb, s64 newLVSize, int newLogSize)
        txQuiesce(sb);
 
        /* Reset size of direct inode */
-       sbi->direct_inode->i_size =  sb->s_bdev->bd_inode->i_size;
+       sbi->direct_inode->i_size =  i_size_read(sb->s_bdev->bd_inode);
 
        if (sbi->mntflag & JFS_INLINELOG) {
                /*
index 2be7c9c..51881eb 100644 (file)
@@ -283,7 +283,7 @@ static int parse_options(char *options, struct super_block *sb, s64 *newLVSize,
                }
                case Opt_resize_nosize:
                {
-                       *newLVSize = sb->s_bdev->bd_inode->i_size >>
+                       *newLVSize = i_size_read(sb->s_bdev->bd_inode) >>
                                sb->s_blocksize_bits;
                        if (*newLVSize == 0)
                                pr_err("JFS: Cannot determine volume size\n");
@@ -549,7 +549,7 @@ static int jfs_fill_super(struct super_block *sb, void *data, int silent)
                goto out_unload;
        }
        inode->i_ino = 0;
-       inode->i_size = sb->s_bdev->bd_inode->i_size;
+       inode->i_size = i_size_read(sb->s_bdev->bd_inode);
        inode->i_mapping->a_ops = &jfs_metapage_aops;
        hlist_add_fake(&inode->i_hash);
        mapping_set_gfp_mask(inode->i_mapping, GFP_NOFS);