Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

jfs: atomically read inode size

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>

authored by

Fabian Frederick and committed by
Dave Kleikamp
684666e5 d966564f

+4 -4
+2 -2
fs/jfs/resize.c
··· 98 98 goto out; 99 99 } 100 100 101 - VolumeSize = sb->s_bdev->bd_inode->i_size >> sb->s_blocksize_bits; 101 + VolumeSize = i_size_read(sb->s_bdev->bd_inode) >> sb->s_blocksize_bits; 102 102 103 103 if (VolumeSize) { 104 104 if (newLVSize > VolumeSize) { ··· 211 211 txQuiesce(sb); 212 212 213 213 /* Reset size of direct inode */ 214 - sbi->direct_inode->i_size = sb->s_bdev->bd_inode->i_size; 214 + sbi->direct_inode->i_size = i_size_read(sb->s_bdev->bd_inode); 215 215 216 216 if (sbi->mntflag & JFS_INLINELOG) { 217 217 /*
+2 -2
fs/jfs/super.c
··· 283 283 } 284 284 case Opt_resize_nosize: 285 285 { 286 - *newLVSize = sb->s_bdev->bd_inode->i_size >> 286 + *newLVSize = i_size_read(sb->s_bdev->bd_inode) >> 287 287 sb->s_blocksize_bits; 288 288 if (*newLVSize == 0) 289 289 pr_err("JFS: Cannot determine volume size\n"); ··· 549 549 goto out_unload; 550 550 } 551 551 inode->i_ino = 0; 552 - inode->i_size = sb->s_bdev->bd_inode->i_size; 552 + inode->i_size = i_size_read(sb->s_bdev->bd_inode); 553 553 inode->i_mapping->a_ops = &jfs_metapage_aops; 554 554 hlist_add_fake(&inode->i_hash); 555 555 mapping_set_gfp_mask(inode->i_mapping, GFP_NOFS);