aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFabian Frederick <fabf@skynet.be>2017-02-27 17:28:32 -0500
committerLinus Torvalds <torvalds@linux-foundation.org>2017-02-27 21:43:46 -0500
commit93407472a21b82f39c955ea7787e5bc7da100642 (patch)
tree217e8f21de0bd132d39d81c555e6cffa51ff348b
parentd31712009709774506e536a3cc1f7c512f550a0c (diff)
fs: add i_blocksize()
Replace all 1 << inode->i_blkbits and (1 << inode->i_blkbits) in fs branch. This patch also fixes multiple checkpatch warnings: WARNING: Prefer 'unsigned int' to bare use of 'unsigned' Thanks to Andrew Morton for suggesting more appropriate function instead of macro. [geliangtang@gmail.com: truncate: use i_blocksize()] Link: http://lkml.kernel.org/r/9c8b2cd83c8f5653805d43debde9fa8817e02fc4.1484895804.git.geliangtang@gmail.com Link: http://lkml.kernel.org/r/1481319905-10126-1-git-send-email-fabf@skynet.be Signed-off-by: Fabian Frederick <fabf@skynet.be> Signed-off-by: Geliang Tang <geliangtang@gmail.com> Cc: Alexander Viro <viro@zeniv.linux.org.uk> Cc: Ross Zwisler <ross.zwisler@linux.intel.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
-rw-r--r--fs/block_dev.c2
-rw-r--r--fs/btrfs/file.c2
-rw-r--r--fs/buffer.c12
-rw-r--r--fs/ceph/addr.c2
-rw-r--r--fs/direct-io.c2
-rw-r--r--fs/ext4/inode.c6
-rw-r--r--fs/ext4/mballoc.c2
-rw-r--r--fs/ext4/move_extent.c2
-rw-r--r--fs/iomap.c10
-rw-r--r--fs/jfs/super.c4
-rw-r--r--fs/mpage.c2
-rw-r--r--fs/nfsd/blocklayout.c6
-rw-r--r--fs/nilfs2/btnode.c2
-rw-r--r--fs/nilfs2/inode.c4
-rw-r--r--fs/nilfs2/mdt.c4
-rw-r--r--fs/nilfs2/segment.c2
-rw-r--r--fs/ocfs2/aops.c2
-rw-r--r--fs/ocfs2/file.c2
-rw-r--r--fs/orangefs/orangefs-utils.c4
-rw-r--r--fs/reiserfs/file.c2
-rw-r--r--fs/reiserfs/inode.c2
-rw-r--r--fs/stat.c2
-rw-r--r--fs/udf/inode.c2
-rw-r--r--fs/xfs/xfs_aops.c16
-rw-r--r--fs/xfs/xfs_file.c4
-rw-r--r--include/linux/fs.h5
-rw-r--r--mm/truncate.c2
27 files changed, 56 insertions, 51 deletions
diff --git a/fs/block_dev.c b/fs/block_dev.c
index 1c62845a72c7..77c30f15a02c 100644
--- a/fs/block_dev.c
+++ b/fs/block_dev.c
@@ -989,7 +989,7 @@ struct block_device *bdget(dev_t dev)
989 bdev->bd_super = NULL; 989 bdev->bd_super = NULL;
990 bdev->bd_inode = inode; 990 bdev->bd_inode = inode;
991 bdev->bd_bdi = &noop_backing_dev_info; 991 bdev->bd_bdi = &noop_backing_dev_info;
992 bdev->bd_block_size = (1 << inode->i_blkbits); 992 bdev->bd_block_size = i_blocksize(inode);
993 bdev->bd_part_count = 0; 993 bdev->bd_part_count = 0;
994 bdev->bd_invalidated = 0; 994 bdev->bd_invalidated = 0;
995 inode->i_mode = S_IFBLK; 995 inode->i_mode = S_IFBLK;
diff --git a/fs/btrfs/file.c b/fs/btrfs/file.c
index 18e5146df864..c1d2a07205da 100644
--- a/fs/btrfs/file.c
+++ b/fs/btrfs/file.c
@@ -2875,7 +2875,7 @@ static long btrfs_fallocate(struct file *file, int mode,
2875 if (!ret) 2875 if (!ret)
2876 ret = btrfs_prealloc_file_range(inode, mode, 2876 ret = btrfs_prealloc_file_range(inode, mode,
2877 range->start, 2877 range->start,
2878 range->len, 1 << inode->i_blkbits, 2878 range->len, i_blocksize(inode),
2879 offset + len, &alloc_hint); 2879 offset + len, &alloc_hint);
2880 else 2880 else
2881 btrfs_free_reserved_data_space(inode, range->start, 2881 btrfs_free_reserved_data_space(inode, range->start,
diff --git a/fs/buffer.c b/fs/buffer.c
index 0e87401cf335..28484b3ebc98 100644
--- a/fs/buffer.c
+++ b/fs/buffer.c
@@ -2395,7 +2395,7 @@ static int cont_expand_zero(struct file *file, struct address_space *mapping,
2395 loff_t pos, loff_t *bytes) 2395 loff_t pos, loff_t *bytes)
2396{ 2396{
2397 struct inode *inode = mapping->host; 2397 struct inode *inode = mapping->host;
2398 unsigned blocksize = 1 << inode->i_blkbits; 2398 unsigned int blocksize = i_blocksize(inode);
2399 struct page *page; 2399 struct page *page;
2400 void *fsdata; 2400 void *fsdata;
2401 pgoff_t index, curidx; 2401 pgoff_t index, curidx;
@@ -2475,8 +2475,8 @@ int cont_write_begin(struct file *file, struct address_space *mapping,
2475 get_block_t *get_block, loff_t *bytes) 2475 get_block_t *get_block, loff_t *bytes)
2476{ 2476{
2477 struct inode *inode = mapping->host; 2477 struct inode *inode = mapping->host;
2478 unsigned blocksize = 1 << inode->i_blkbits; 2478 unsigned int blocksize = i_blocksize(inode);
2479 unsigned zerofrom; 2479 unsigned int zerofrom;
2480 int err; 2480 int err;
2481 2481
2482 err = cont_expand_zero(file, mapping, pos, bytes); 2482 err = cont_expand_zero(file, mapping, pos, bytes);
@@ -2838,7 +2838,7 @@ int nobh_truncate_page(struct address_space *mapping,
2838 struct buffer_head map_bh; 2838 struct buffer_head map_bh;
2839 int err; 2839 int err;
2840 2840
2841 blocksize = 1 << inode->i_blkbits; 2841 blocksize = i_blocksize(inode);
2842 length = offset & (blocksize - 1); 2842 length = offset & (blocksize - 1);
2843 2843
2844 /* Block boundary? Nothing to do */ 2844 /* Block boundary? Nothing to do */
@@ -2916,7 +2916,7 @@ int block_truncate_page(struct address_space *mapping,
2916 struct buffer_head *bh; 2916 struct buffer_head *bh;
2917 int err; 2917 int err;
2918 2918
2919 blocksize = 1 << inode->i_blkbits; 2919 blocksize = i_blocksize(inode);
2920 length = offset & (blocksize - 1); 2920 length = offset & (blocksize - 1);
2921 2921
2922 /* Block boundary? Nothing to do */ 2922 /* Block boundary? Nothing to do */
@@ -3028,7 +3028,7 @@ sector_t generic_block_bmap(struct address_space *mapping, sector_t block,
3028 struct inode *inode = mapping->host; 3028 struct inode *inode = mapping->host;
3029 tmp.b_state = 0; 3029 tmp.b_state = 0;
3030 tmp.b_blocknr = 0; 3030 tmp.b_blocknr = 0;
3031 tmp.b_size = 1 << inode->i_blkbits; 3031 tmp.b_size = i_blocksize(inode);
3032 get_block(inode, block, &tmp, 0); 3032 get_block(inode, block, &tmp, 0);
3033 return tmp.b_blocknr; 3033 return tmp.b_blocknr;
3034} 3034}
diff --git a/fs/ceph/addr.c b/fs/ceph/addr.c
index 09860c0ec7c1..7ce35aec8c76 100644
--- a/fs/ceph/addr.c
+++ b/fs/ceph/addr.c
@@ -751,7 +751,7 @@ static int ceph_writepages_start(struct address_space *mapping,
751 struct pagevec pvec; 751 struct pagevec pvec;
752 int done = 0; 752 int done = 0;
753 int rc = 0; 753 int rc = 0;
754 unsigned wsize = 1 << inode->i_blkbits; 754 unsigned int wsize = i_blocksize(inode);
755 struct ceph_osd_request *req = NULL; 755 struct ceph_osd_request *req = NULL;
756 int do_sync = 0; 756 int do_sync = 0;
757 loff_t snap_size, i_size; 757 loff_t snap_size, i_size;
diff --git a/fs/direct-io.c b/fs/direct-io.c
index c87bae4376b8..a04ebea77de8 100644
--- a/fs/direct-io.c
+++ b/fs/direct-io.c
@@ -587,7 +587,7 @@ static int dio_set_defer_completion(struct dio *dio)
587/* 587/*
588 * Call into the fs to map some more disk blocks. We record the current number 588 * Call into the fs to map some more disk blocks. We record the current number
589 * of available blocks at sdio->blocks_available. These are in units of the 589 * of available blocks at sdio->blocks_available. These are in units of the
590 * fs blocksize, (1 << inode->i_blkbits). 590 * fs blocksize, i_blocksize(inode).
591 * 591 *
592 * The fs is allowed to map lots of blocks at once. If it wants to do that, 592 * The fs is allowed to map lots of blocks at once. If it wants to do that,
593 * it uses the passed inode-relative block number as the file offset, as usual. 593 * it uses the passed inode-relative block number as the file offset, as usual.
diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c
index 41d8e53e5a7f..971f66342080 100644
--- a/fs/ext4/inode.c
+++ b/fs/ext4/inode.c
@@ -2221,7 +2221,7 @@ static int mpage_process_page_bufs(struct mpage_da_data *mpd,
2221{ 2221{
2222 struct inode *inode = mpd->inode; 2222 struct inode *inode = mpd->inode;
2223 int err; 2223 int err;
2224 ext4_lblk_t blocks = (i_size_read(inode) + (1 << inode->i_blkbits) - 1) 2224 ext4_lblk_t blocks = (i_size_read(inode) + i_blocksize(inode) - 1)
2225 >> inode->i_blkbits; 2225 >> inode->i_blkbits;
2226 2226
2227 do { 2227 do {
@@ -3577,7 +3577,7 @@ static ssize_t ext4_direct_IO_write(struct kiocb *iocb, struct iov_iter *iter)
3577 if (overwrite) 3577 if (overwrite)
3578 get_block_func = ext4_dio_get_block_overwrite; 3578 get_block_func = ext4_dio_get_block_overwrite;
3579 else if (!ext4_test_inode_flag(inode, EXT4_INODE_EXTENTS) || 3579 else if (!ext4_test_inode_flag(inode, EXT4_INODE_EXTENTS) ||
3580 round_down(offset, 1 << inode->i_blkbits) >= inode->i_size) { 3580 round_down(offset, i_blocksize(inode)) >= inode->i_size) {
3581 get_block_func = ext4_dio_get_block; 3581 get_block_func = ext4_dio_get_block;
3582 dio_flags = DIO_LOCKING | DIO_SKIP_HOLES; 3582 dio_flags = DIO_LOCKING | DIO_SKIP_HOLES;
3583 } else if (is_sync_kiocb(iocb)) { 3583 } else if (is_sync_kiocb(iocb)) {
@@ -5179,7 +5179,7 @@ static void ext4_wait_for_tail_page_commit(struct inode *inode)
5179 * do. We do the check mainly to optimize the common PAGE_SIZE == 5179 * do. We do the check mainly to optimize the common PAGE_SIZE ==
5180 * blocksize case 5180 * blocksize case
5181 */ 5181 */
5182 if (offset > PAGE_SIZE - (1 << inode->i_blkbits)) 5182 if (offset > PAGE_SIZE - i_blocksize(inode))
5183 return; 5183 return;
5184 while (1) { 5184 while (1) {
5185 page = find_lock_page(inode->i_mapping, 5185 page = find_lock_page(inode->i_mapping,
diff --git a/fs/ext4/mballoc.c b/fs/ext4/mballoc.c
index 10c62de642c6..354dc1a894c2 100644
--- a/fs/ext4/mballoc.c
+++ b/fs/ext4/mballoc.c
@@ -838,7 +838,7 @@ static int ext4_mb_init_cache(struct page *page, char *incore, gfp_t gfp)
838 inode = page->mapping->host; 838 inode = page->mapping->host;
839 sb = inode->i_sb; 839 sb = inode->i_sb;
840 ngroups = ext4_get_groups_count(sb); 840 ngroups = ext4_get_groups_count(sb);
841 blocksize = 1 << inode->i_blkbits; 841 blocksize = i_blocksize(inode);
842 blocks_per_page = PAGE_SIZE / blocksize; 842 blocks_per_page = PAGE_SIZE / blocksize;
843 843
844 groups_per_page = blocks_per_page >> 1; 844 groups_per_page = blocks_per_page >> 1;
diff --git a/fs/ext4/move_extent.c b/fs/ext4/move_extent.c
index 6fc14def0c70..578f8c33fb44 100644
--- a/fs/ext4/move_extent.c
+++ b/fs/ext4/move_extent.c
@@ -187,7 +187,7 @@ mext_page_mkuptodate(struct page *page, unsigned from, unsigned to)
187 if (PageUptodate(page)) 187 if (PageUptodate(page))
188 return 0; 188 return 0;
189 189
190 blocksize = 1 << inode->i_blkbits; 190 blocksize = i_blocksize(inode);
191 if (!page_has_buffers(page)) 191 if (!page_has_buffers(page))
192 create_empty_buffers(page, blocksize, 0); 192 create_empty_buffers(page, blocksize, 0);
193 193
diff --git a/fs/iomap.c b/fs/iomap.c
index d209f42cdcb8..0f85f2410605 100644
--- a/fs/iomap.c
+++ b/fs/iomap.c
@@ -420,8 +420,8 @@ int
420iomap_truncate_page(struct inode *inode, loff_t pos, bool *did_zero, 420iomap_truncate_page(struct inode *inode, loff_t pos, bool *did_zero,
421 const struct iomap_ops *ops) 421 const struct iomap_ops *ops)
422{ 422{
423 unsigned blocksize = (1 << inode->i_blkbits); 423 unsigned int blocksize = i_blocksize(inode);
424 unsigned off = pos & (blocksize - 1); 424 unsigned int off = pos & (blocksize - 1);
425 425
426 /* Block boundary? Nothing to do */ 426 /* Block boundary? Nothing to do */
427 if (!off) 427 if (!off)
@@ -735,9 +735,9 @@ iomap_dio_actor(struct inode *inode, loff_t pos, loff_t length,
735 void *data, struct iomap *iomap) 735 void *data, struct iomap *iomap)
736{ 736{
737 struct iomap_dio *dio = data; 737 struct iomap_dio *dio = data;
738 unsigned blkbits = blksize_bits(bdev_logical_block_size(iomap->bdev)); 738 unsigned int blkbits = blksize_bits(bdev_logical_block_size(iomap->bdev));
739 unsigned fs_block_size = (1 << inode->i_blkbits), pad; 739 unsigned int fs_block_size = i_blocksize(inode), pad;
740 unsigned align = iov_iter_alignment(dio->submit.iter); 740 unsigned int align = iov_iter_alignment(dio->submit.iter);
741 struct iov_iter iter; 741 struct iov_iter iter;
742 struct bio *bio; 742 struct bio *bio;
743 bool need_zeroout = false; 743 bool need_zeroout = false;
diff --git a/fs/jfs/super.c b/fs/jfs/super.c
index 2be7c9ce6663..c64c2574a0aa 100644
--- a/fs/jfs/super.c
+++ b/fs/jfs/super.c
@@ -758,7 +758,7 @@ static ssize_t jfs_quota_read(struct super_block *sb, int type, char *data,
758 sb->s_blocksize - offset : toread; 758 sb->s_blocksize - offset : toread;
759 759
760 tmp_bh.b_state = 0; 760 tmp_bh.b_state = 0;
761 tmp_bh.b_size = 1 << inode->i_blkbits; 761 tmp_bh.b_size = i_blocksize(inode);
762 err = jfs_get_block(inode, blk, &tmp_bh, 0); 762 err = jfs_get_block(inode, blk, &tmp_bh, 0);
763 if (err) 763 if (err)
764 return err; 764 return err;
@@ -798,7 +798,7 @@ static ssize_t jfs_quota_write(struct super_block *sb, int type,
798 sb->s_blocksize - offset : towrite; 798 sb->s_blocksize - offset : towrite;
799 799
800 tmp_bh.b_state = 0; 800 tmp_bh.b_state = 0;
801 tmp_bh.b_size = 1 << inode->i_blkbits; 801 tmp_bh.b_size = i_blocksize(inode);
802 err = jfs_get_block(inode, blk, &tmp_bh, 1); 802 err = jfs_get_block(inode, blk, &tmp_bh, 1);
803 if (err) 803 if (err)
804 goto out; 804 goto out;
diff --git a/fs/mpage.c b/fs/mpage.c
index 28af984a3d96..baff8f820c29 100644
--- a/fs/mpage.c
+++ b/fs/mpage.c
@@ -115,7 +115,7 @@ map_buffer_to_page(struct page *page, struct buffer_head *bh, int page_block)
115 SetPageUptodate(page); 115 SetPageUptodate(page);
116 return; 116 return;
117 } 117 }
118 create_empty_buffers(page, 1 << inode->i_blkbits, 0); 118 create_empty_buffers(page, i_blocksize(inode), 0);
119 } 119 }
120 head = page_buffers(page); 120 head = page_buffers(page);
121 page_bh = head; 121 page_bh = head;
diff --git a/fs/nfsd/blocklayout.c b/fs/nfsd/blocklayout.c
index a06115e31612..92b4b41d19d2 100644
--- a/fs/nfsd/blocklayout.c
+++ b/fs/nfsd/blocklayout.c
@@ -24,7 +24,7 @@ nfsd4_block_proc_layoutget(struct inode *inode, const struct svc_fh *fhp,
24{ 24{
25 struct nfsd4_layout_seg *seg = &args->lg_seg; 25 struct nfsd4_layout_seg *seg = &args->lg_seg;
26 struct super_block *sb = inode->i_sb; 26 struct super_block *sb = inode->i_sb;
27 u32 block_size = (1 << inode->i_blkbits); 27 u32 block_size = i_blocksize(inode);
28 struct pnfs_block_extent *bex; 28 struct pnfs_block_extent *bex;
29 struct iomap iomap; 29 struct iomap iomap;
30 u32 device_generation = 0; 30 u32 device_generation = 0;
@@ -181,7 +181,7 @@ nfsd4_block_proc_layoutcommit(struct inode *inode,
181 int nr_iomaps; 181 int nr_iomaps;
182 182
183 nr_iomaps = nfsd4_block_decode_layoutupdate(lcp->lc_up_layout, 183 nr_iomaps = nfsd4_block_decode_layoutupdate(lcp->lc_up_layout,
184 lcp->lc_up_len, &iomaps, 1 << inode->i_blkbits); 184 lcp->lc_up_len, &iomaps, i_blocksize(inode));
185 if (nr_iomaps < 0) 185 if (nr_iomaps < 0)
186 return nfserrno(nr_iomaps); 186 return nfserrno(nr_iomaps);
187 187
@@ -375,7 +375,7 @@ nfsd4_scsi_proc_layoutcommit(struct inode *inode,
375 int nr_iomaps; 375 int nr_iomaps;
376 376
377 nr_iomaps = nfsd4_scsi_decode_layoutupdate(lcp->lc_up_layout, 377 nr_iomaps = nfsd4_scsi_decode_layoutupdate(lcp->lc_up_layout,
378 lcp->lc_up_len, &iomaps, 1 << inode->i_blkbits); 378 lcp->lc_up_len, &iomaps, i_blocksize(inode));
379 if (nr_iomaps < 0) 379 if (nr_iomaps < 0)
380 return nfserrno(nr_iomaps); 380 return nfserrno(nr_iomaps);
381 381
diff --git a/fs/nilfs2/btnode.c b/fs/nilfs2/btnode.c
index d5c23da43513..c21e0b4454a6 100644
--- a/fs/nilfs2/btnode.c
+++ b/fs/nilfs2/btnode.c
@@ -50,7 +50,7 @@ nilfs_btnode_create_block(struct address_space *btnc, __u64 blocknr)
50 brelse(bh); 50 brelse(bh);
51 BUG(); 51 BUG();
52 } 52 }
53 memset(bh->b_data, 0, 1 << inode->i_blkbits); 53 memset(bh->b_data, 0, i_blocksize(inode));
54 bh->b_bdev = inode->i_sb->s_bdev; 54 bh->b_bdev = inode->i_sb->s_bdev;
55 bh->b_blocknr = blocknr; 55 bh->b_blocknr = blocknr;
56 set_buffer_mapped(bh); 56 set_buffer_mapped(bh);
diff --git a/fs/nilfs2/inode.c b/fs/nilfs2/inode.c
index c7f4fef9ebf5..7ffe71a8dfb9 100644
--- a/fs/nilfs2/inode.c
+++ b/fs/nilfs2/inode.c
@@ -51,7 +51,7 @@ void nilfs_inode_add_blocks(struct inode *inode, int n)
51{ 51{
52 struct nilfs_root *root = NILFS_I(inode)->i_root; 52 struct nilfs_root *root = NILFS_I(inode)->i_root;
53 53
54 inode_add_bytes(inode, (1 << inode->i_blkbits) * n); 54 inode_add_bytes(inode, i_blocksize(inode) * n);
55 if (root) 55 if (root)
56 atomic64_add(n, &root->blocks_count); 56 atomic64_add(n, &root->blocks_count);
57} 57}
@@ -60,7 +60,7 @@ void nilfs_inode_sub_blocks(struct inode *inode, int n)
60{ 60{
61 struct nilfs_root *root = NILFS_I(inode)->i_root; 61 struct nilfs_root *root = NILFS_I(inode)->i_root;
62 62
63 inode_sub_bytes(inode, (1 << inode->i_blkbits) * n); 63 inode_sub_bytes(inode, i_blocksize(inode) * n);
64 if (root) 64 if (root)
65 atomic64_sub(n, &root->blocks_count); 65 atomic64_sub(n, &root->blocks_count);
66} 66}
diff --git a/fs/nilfs2/mdt.c b/fs/nilfs2/mdt.c
index d56d3a5bea88..98835ed6bef4 100644
--- a/fs/nilfs2/mdt.c
+++ b/fs/nilfs2/mdt.c
@@ -57,7 +57,7 @@ nilfs_mdt_insert_new_block(struct inode *inode, unsigned long block,
57 set_buffer_mapped(bh); 57 set_buffer_mapped(bh);
58 58
59 kaddr = kmap_atomic(bh->b_page); 59 kaddr = kmap_atomic(bh->b_page);
60 memset(kaddr + bh_offset(bh), 0, 1 << inode->i_blkbits); 60 memset(kaddr + bh_offset(bh), 0, i_blocksize(inode));
61 if (init_block) 61 if (init_block)
62 init_block(inode, bh, kaddr); 62 init_block(inode, bh, kaddr);
63 flush_dcache_page(bh->b_page); 63 flush_dcache_page(bh->b_page);
@@ -501,7 +501,7 @@ void nilfs_mdt_set_entry_size(struct inode *inode, unsigned int entry_size,
501 struct nilfs_mdt_info *mi = NILFS_MDT(inode); 501 struct nilfs_mdt_info *mi = NILFS_MDT(inode);
502 502
503 mi->mi_entry_size = entry_size; 503 mi->mi_entry_size = entry_size;
504 mi->mi_entries_per_block = (1 << inode->i_blkbits) / entry_size; 504 mi->mi_entries_per_block = i_blocksize(inode) / entry_size;
505 mi->mi_first_entry_offset = DIV_ROUND_UP(header_size, entry_size); 505 mi->mi_first_entry_offset = DIV_ROUND_UP(header_size, entry_size);
506} 506}
507 507
diff --git a/fs/nilfs2/segment.c b/fs/nilfs2/segment.c
index bedcae2c28e6..7d18d62e8e07 100644
--- a/fs/nilfs2/segment.c
+++ b/fs/nilfs2/segment.c
@@ -723,7 +723,7 @@ static size_t nilfs_lookup_dirty_data_buffers(struct inode *inode,
723 723
724 lock_page(page); 724 lock_page(page);
725 if (!page_has_buffers(page)) 725 if (!page_has_buffers(page))
726 create_empty_buffers(page, 1 << inode->i_blkbits, 0); 726 create_empty_buffers(page, i_blocksize(inode), 0);
727 unlock_page(page); 727 unlock_page(page);
728 728
729 bh = head = page_buffers(page); 729 bh = head = page_buffers(page);
diff --git a/fs/ocfs2/aops.c b/fs/ocfs2/aops.c
index 11556b7d93ec..88a31e9340a0 100644
--- a/fs/ocfs2/aops.c
+++ b/fs/ocfs2/aops.c
@@ -608,7 +608,7 @@ int ocfs2_map_page_blocks(struct page *page, u64 *p_blkno,
608 int ret = 0; 608 int ret = 0;
609 struct buffer_head *head, *bh, *wait[2], **wait_bh = wait; 609 struct buffer_head *head, *bh, *wait[2], **wait_bh = wait;
610 unsigned int block_end, block_start; 610 unsigned int block_end, block_start;
611 unsigned int bsize = 1 << inode->i_blkbits; 611 unsigned int bsize = i_blocksize(inode);
612 612
613 if (!page_has_buffers(page)) 613 if (!page_has_buffers(page))
614 create_empty_buffers(page, bsize, 0); 614 create_empty_buffers(page, bsize, 0);
diff --git a/fs/ocfs2/file.c b/fs/ocfs2/file.c
index 7b6a146327d7..8836305eb378 100644
--- a/fs/ocfs2/file.c
+++ b/fs/ocfs2/file.c
@@ -808,7 +808,7 @@ static int ocfs2_write_zero_page(struct inode *inode, u64 abs_from,
808 /* We know that zero_from is block aligned */ 808 /* We know that zero_from is block aligned */
809 for (block_start = zero_from; block_start < zero_to; 809 for (block_start = zero_from; block_start < zero_to;
810 block_start = block_end) { 810 block_start = block_end) {
811 block_end = block_start + (1 << inode->i_blkbits); 811 block_end = block_start + i_blocksize(inode);
812 812
813 /* 813 /*
814 * block_start is block-aligned. Bump it by one to force 814 * block_start is block-aligned. Bump it by one to force
diff --git a/fs/orangefs/orangefs-utils.c b/fs/orangefs/orangefs-utils.c
index 06af81f71e10..9b96b99539d6 100644
--- a/fs/orangefs/orangefs-utils.c
+++ b/fs/orangefs/orangefs-utils.c
@@ -306,7 +306,7 @@ int orangefs_inode_getattr(struct inode *inode, int new, int bypass)
306 break; 306 break;
307 case S_IFDIR: 307 case S_IFDIR:
308 inode->i_size = PAGE_SIZE; 308 inode->i_size = PAGE_SIZE;
309 orangefs_inode->blksize = (1 << inode->i_blkbits); 309 orangefs_inode->blksize = i_blocksize(inode);
310 spin_lock(&inode->i_lock); 310 spin_lock(&inode->i_lock);
311 inode_set_bytes(inode, inode->i_size); 311 inode_set_bytes(inode, inode->i_size);
312 spin_unlock(&inode->i_lock); 312 spin_unlock(&inode->i_lock);
@@ -316,7 +316,7 @@ int orangefs_inode_getattr(struct inode *inode, int new, int bypass)
316 if (new) { 316 if (new) {
317 inode->i_size = (loff_t)strlen(new_op-> 317 inode->i_size = (loff_t)strlen(new_op->
318 downcall.resp.getattr.link_target); 318 downcall.resp.getattr.link_target);
319 orangefs_inode->blksize = (1 << inode->i_blkbits); 319 orangefs_inode->blksize = i_blocksize(inode);
320 ret = strscpy(orangefs_inode->link_target, 320 ret = strscpy(orangefs_inode->link_target,
321 new_op->downcall.resp.getattr.link_target, 321 new_op->downcall.resp.getattr.link_target,
322 ORANGEFS_NAME_MAX); 322 ORANGEFS_NAME_MAX);
diff --git a/fs/reiserfs/file.c b/fs/reiserfs/file.c
index 2f8c5c9bdaf6..b396eb09f288 100644
--- a/fs/reiserfs/file.c
+++ b/fs/reiserfs/file.c
@@ -189,7 +189,7 @@ int reiserfs_commit_page(struct inode *inode, struct page *page,
189 int ret = 0; 189 int ret = 0;
190 190
191 th.t_trans_id = 0; 191 th.t_trans_id = 0;
192 blocksize = 1 << inode->i_blkbits; 192 blocksize = i_blocksize(inode);
193 193
194 if (logit) { 194 if (logit) {
195 reiserfs_write_lock(s); 195 reiserfs_write_lock(s);
diff --git a/fs/reiserfs/inode.c b/fs/reiserfs/inode.c
index cfeae9b0a2b7..a6ab9d64ea1b 100644
--- a/fs/reiserfs/inode.c
+++ b/fs/reiserfs/inode.c
@@ -525,7 +525,7 @@ static int reiserfs_get_blocks_direct_io(struct inode *inode,
525 * referenced in convert_tail_for_hole() that may be called from 525 * referenced in convert_tail_for_hole() that may be called from
526 * reiserfs_get_block() 526 * reiserfs_get_block()
527 */ 527 */
528 bh_result->b_size = (1 << inode->i_blkbits); 528 bh_result->b_size = i_blocksize(inode);
529 529
530 ret = reiserfs_get_block(inode, iblock, bh_result, 530 ret = reiserfs_get_block(inode, iblock, bh_result,
531 create | GET_BLOCK_NO_DANGLE); 531 create | GET_BLOCK_NO_DANGLE);
diff --git a/fs/stat.c b/fs/stat.c
index a268b7f27adf..3f14d1ef0868 100644
--- a/fs/stat.c
+++ b/fs/stat.c
@@ -31,7 +31,7 @@ void generic_fillattr(struct inode *inode, struct kstat *stat)
31 stat->atime = inode->i_atime; 31 stat->atime = inode->i_atime;
32 stat->mtime = inode->i_mtime; 32 stat->mtime = inode->i_mtime;
33 stat->ctime = inode->i_ctime; 33 stat->ctime = inode->i_ctime;
34 stat->blksize = (1 << inode->i_blkbits); 34 stat->blksize = i_blocksize(inode);
35 stat->blocks = inode->i_blocks; 35 stat->blocks = inode->i_blocks;
36} 36}
37 37
diff --git a/fs/udf/inode.c b/fs/udf/inode.c
index 8ec6b3df0bc7..a8d8f71ef8bd 100644
--- a/fs/udf/inode.c
+++ b/fs/udf/inode.c
@@ -1193,7 +1193,7 @@ int udf_setsize(struct inode *inode, loff_t newsize)
1193{ 1193{
1194 int err; 1194 int err;
1195 struct udf_inode_info *iinfo; 1195 struct udf_inode_info *iinfo;
1196 int bsize = 1 << inode->i_blkbits; 1196 int bsize = i_blocksize(inode);
1197 1197
1198 if (!(S_ISREG(inode->i_mode) || S_ISDIR(inode->i_mode) || 1198 if (!(S_ISREG(inode->i_mode) || S_ISDIR(inode->i_mode) ||
1199 S_ISLNK(inode->i_mode))) 1199 S_ISLNK(inode->i_mode)))
diff --git a/fs/xfs/xfs_aops.c b/fs/xfs/xfs_aops.c
index 1ff9df7a3ce8..bf65a9ea8642 100644
--- a/fs/xfs/xfs_aops.c
+++ b/fs/xfs/xfs_aops.c
@@ -103,9 +103,9 @@ xfs_finish_page_writeback(
103 unsigned int bsize; 103 unsigned int bsize;
104 104
105 ASSERT(bvec->bv_offset < PAGE_SIZE); 105 ASSERT(bvec->bv_offset < PAGE_SIZE);
106 ASSERT((bvec->bv_offset & ((1 << inode->i_blkbits) - 1)) == 0); 106 ASSERT((bvec->bv_offset & (i_blocksize(inode) - 1)) == 0);
107 ASSERT(end < PAGE_SIZE); 107 ASSERT(end < PAGE_SIZE);
108 ASSERT((bvec->bv_len & ((1 << inode->i_blkbits) - 1)) == 0); 108 ASSERT((bvec->bv_len & (i_blocksize(inode) - 1)) == 0);
109 109
110 bh = head = page_buffers(bvec->bv_page); 110 bh = head = page_buffers(bvec->bv_page);
111 111
@@ -349,7 +349,7 @@ xfs_map_blocks(
349{ 349{
350 struct xfs_inode *ip = XFS_I(inode); 350 struct xfs_inode *ip = XFS_I(inode);
351 struct xfs_mount *mp = ip->i_mount; 351 struct xfs_mount *mp = ip->i_mount;
352 ssize_t count = 1 << inode->i_blkbits; 352 ssize_t count = i_blocksize(inode);
353 xfs_fileoff_t offset_fsb, end_fsb; 353 xfs_fileoff_t offset_fsb, end_fsb;
354 int error = 0; 354 int error = 0;
355 int bmapi_flags = XFS_BMAPI_ENTIRE; 355 int bmapi_flags = XFS_BMAPI_ENTIRE;
@@ -758,7 +758,7 @@ xfs_aops_discard_page(
758 break; 758 break;
759 } 759 }
760next_buffer: 760next_buffer:
761 offset += 1 << inode->i_blkbits; 761 offset += i_blocksize(inode);
762 762
763 } while ((bh = bh->b_this_page) != head); 763 } while ((bh = bh->b_this_page) != head);
764 764
@@ -846,7 +846,7 @@ xfs_writepage_map(
846 LIST_HEAD(submit_list); 846 LIST_HEAD(submit_list);
847 struct xfs_ioend *ioend, *next; 847 struct xfs_ioend *ioend, *next;
848 struct buffer_head *bh, *head; 848 struct buffer_head *bh, *head;
849 ssize_t len = 1 << inode->i_blkbits; 849 ssize_t len = i_blocksize(inode);
850 int error = 0; 850 int error = 0;
851 int count = 0; 851 int count = 0;
852 int uptodate = 1; 852 int uptodate = 1;
@@ -1210,7 +1210,7 @@ xfs_map_trim_size(
1210 offset + mapping_size >= i_size_read(inode)) { 1210 offset + mapping_size >= i_size_read(inode)) {
1211 /* limit mapping to block that spans EOF */ 1211 /* limit mapping to block that spans EOF */
1212 mapping_size = roundup_64(i_size_read(inode) - offset, 1212 mapping_size = roundup_64(i_size_read(inode) - offset,
1213 1 << inode->i_blkbits); 1213 i_blocksize(inode));
1214 } 1214 }
1215 if (mapping_size > LONG_MAX) 1215 if (mapping_size > LONG_MAX)
1216 mapping_size = LONG_MAX; 1216 mapping_size = LONG_MAX;
@@ -1241,7 +1241,7 @@ xfs_get_blocks(
1241 return -EIO; 1241 return -EIO;
1242 1242
1243 offset = (xfs_off_t)iblock << inode->i_blkbits; 1243 offset = (xfs_off_t)iblock << inode->i_blkbits;
1244 ASSERT(bh_result->b_size >= (1 << inode->i_blkbits)); 1244 ASSERT(bh_result->b_size >= i_blocksize(inode));
1245 size = bh_result->b_size; 1245 size = bh_result->b_size;
1246 1246
1247 if (offset >= i_size_read(inode)) 1247 if (offset >= i_size_read(inode))
@@ -1389,7 +1389,7 @@ xfs_vm_set_page_dirty(
1389 if (offset < end_offset) 1389 if (offset < end_offset)
1390 set_buffer_dirty(bh); 1390 set_buffer_dirty(bh);
1391 bh = bh->b_this_page; 1391 bh = bh->b_this_page;
1392 offset += 1 << inode->i_blkbits; 1392 offset += i_blocksize(inode);
1393 } while (bh != head); 1393 } while (bh != head);
1394 } 1394 }
1395 /* 1395 /*
diff --git a/fs/xfs/xfs_file.c b/fs/xfs/xfs_file.c
index a50eca676670..35703a801372 100644
--- a/fs/xfs/xfs_file.c
+++ b/fs/xfs/xfs_file.c
@@ -754,7 +754,7 @@ xfs_file_fallocate(
754 if (error) 754 if (error)
755 goto out_unlock; 755 goto out_unlock;
756 } else if (mode & FALLOC_FL_COLLAPSE_RANGE) { 756 } else if (mode & FALLOC_FL_COLLAPSE_RANGE) {
757 unsigned blksize_mask = (1 << inode->i_blkbits) - 1; 757 unsigned int blksize_mask = i_blocksize(inode) - 1;
758 758
759 if (offset & blksize_mask || len & blksize_mask) { 759 if (offset & blksize_mask || len & blksize_mask) {
760 error = -EINVAL; 760 error = -EINVAL;
@@ -776,7 +776,7 @@ xfs_file_fallocate(
776 if (error) 776 if (error)
777 goto out_unlock; 777 goto out_unlock;
778 } else if (mode & FALLOC_FL_INSERT_RANGE) { 778 } else if (mode & FALLOC_FL_INSERT_RANGE) {
779 unsigned blksize_mask = (1 << inode->i_blkbits) - 1; 779 unsigned int blksize_mask = i_blocksize(inode) - 1;
780 780
781 new_size = i_size_read(inode) + len; 781 new_size = i_size_read(inode) + len;
782 if (offset & blksize_mask || len & blksize_mask) { 782 if (offset & blksize_mask || len & blksize_mask) {
diff --git a/include/linux/fs.h b/include/linux/fs.h
index c930cbc19342..c64f2cb7d364 100644
--- a/include/linux/fs.h
+++ b/include/linux/fs.h
@@ -655,6 +655,11 @@ struct inode {
655 void *i_private; /* fs or device private pointer */ 655 void *i_private; /* fs or device private pointer */
656}; 656};
657 657
658static inline unsigned int i_blocksize(const struct inode *node)
659{
660 return (1 << node->i_blkbits);
661}
662
658static inline int inode_unhashed(struct inode *inode) 663static inline int inode_unhashed(struct inode *inode)
659{ 664{
660 return hlist_unhashed(&inode->i_hash); 665 return hlist_unhashed(&inode->i_hash);
diff --git a/mm/truncate.c b/mm/truncate.c
index f2db67465495..6263affdef88 100644
--- a/mm/truncate.c
+++ b/mm/truncate.c
@@ -786,7 +786,7 @@ EXPORT_SYMBOL(truncate_setsize);
786 */ 786 */
787void pagecache_isize_extended(struct inode *inode, loff_t from, loff_t to) 787void pagecache_isize_extended(struct inode *inode, loff_t from, loff_t to)
788{ 788{
789 int bsize = 1 << inode->i_blkbits; 789 int bsize = i_blocksize(inode);
790 loff_t rounded_from; 790 loff_t rounded_from;
791 struct page *page; 791 struct page *page;
792 pgoff_t index; 792 pgoff_t index;