Patch "fs: add i_blocksize()" has been added to the 4.4-stable tree
Subsystems (14)
This is a note to let you know that I've just added the patch titled
fs: add i_blocksize()
to the 4.4-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
fs-add-i_blocksize.patch
and it can be found in the queue-4.4 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
93407472a21b82f39c955ea7787e5bc7da100642Mon Sep 17 00:00:00 2001
From: Fabian Frederick <[email protected]>
Date: Mon, 27 Feb 2017 14:28:32 -0800
Subject: fs: add i_blocksize()
From: Fabian Frederick <[email protected]>
commit 93407472a21b82f39c955ea7787e5bc7da100642 upstream.
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.
--- fs/btrfs/file.c | 2 +- fs/buffer.c | 12 ++++++------ fs/ceph/addr.c | 2 +- fs/direct-io.c | 2 +- fs/ext4/inode.c | 2 +- fs/ext4/move_extent.c | 2 +- fs/jfs/super.c | 4 ++-- fs/mpage.c | 2 +- fs/nfsd/blocklayout.c | 4 ++-- fs/nilfs2/btnode.c | 2 +- fs/nilfs2/inode.c | 4 ++-- fs/nilfs2/mdt.c | 4 ++-- fs/nilfs2/segment.c | 2 +- fs/ocfs2/aops.c | 2 +- fs/ocfs2/file.c | 2 +- fs/reiserfs/file.c | 2 +- fs/reiserfs/inode.c | 2 +- fs/stat.c | 2 +- fs/udf/inode.c | 2 +- fs/xfs/xfs_aops.c | 10 +++++----- fs/xfs/xfs_file.c | 4 ++-- include/linux/fs.h | 5 +++++ mm/truncate.c | 2 +- 23 files changed, 41 insertions(+), 36 deletions(-)
fs/btrfs/file.c +1 -1
@@ -2771,7 +2771,7 @@ static long btrfs_fallocate(struct fileif (!ret) ret =btrfs_prealloc_file_range (inode, mode, range->start, - range->len,1 << inode->i_blkbits, + range->len,i_blocksize (inode), offset + len, &alloc_hint);list_del (&range->list);kfree (range);
fs/buffer.c +6 -6
@@ -2298,7 +2298,7 @@ static int cont_expand_zero(struct file loff_t pos, loff_t *bytes) { struct inode *inode = mapping->host; -unsigned blocksize =1 << inode->i_blkbits; +unsigned int blocksize =i_blocksize (inode);struct page *page;void *fsdata;pgoff_t index, curidx;
@@ -2378,8 +2378,8 @@ int cont_write_begin(struct file *file, get_block_t *get_block, loff_t *bytes) {struct inode *inode = mapping->host; -unsigned blocksize =1 << inode->i_blkbits; -unsigned zerofrom; +unsigned int blocksize =i_blocksize (inode); +unsigned int zerofrom;int err; err =cont_expand_zero (file, mapping, pos, bytes);
@@ -2741,7 +2741,7 @@ int nobh_truncate_page(struct address_spstruct buffer_head map_bh;int err; - blocksize =1 << inode->i_blkbits; + blocksize =i_blocksize (inode); length = offset & (blocksize -1 );/* Block boundary? Nothing to do */
@@ -2819,7 +2819,7 @@ int block_truncate_page(struct address_sstruct buffer_head *bh;int err; - blocksize =1 << inode->i_blkbits; + blocksize =i_blocksize (inode); length = offset & (blocksize -1 );/* Block boundary? Nothing to do */
@@ -2931,7 +2931,7 @@ sector_t generic_block_bmap(struct addrestruct inode *inode = mapping->host; tmp.b_state =0 ; tmp.b_blocknr =0 ; - tmp.b_size =1 << inode->i_blkbits; + tmp.b_size =i_blocksize (inode);get_block (inode, block, &tmp,0 );return tmp.b_blocknr; }
fs/ceph/addr.c +1 -1
@@ -697,7 +697,7 @@ static int ceph_writepages_start(structstruct pagevec pvec;int done =0 ;int rc =0 ; -unsigned wsize =1 << inode->i_blkbits; +unsigned int wsize =i_blocksize (inode);struct ceph_osd_request *req =NULL ;int do_sync =0 ;loff_t snap_size, i_size;
fs/direct-io.c +1 -1
@@ -575,7 +575,7 @@ static int dio_set_defer_completion(stru/* * Call into the fs to map some more disk blocks. We record the current number * of available blocks at sdio->blocks_available. These are in units of the -* fs blocksize, (1 << inode->i_blkbits). +* fs blocksize, i_blocksize(inode). * * The fs is allowed to map lots of blocks at once. If it wants to do that, * it uses the passed inode-relative block number as the file offset, as usual.
fs/ext4/inode.c +1 -1
@@ -2044,7 +2044,7 @@ static int mpage_process_page_bufs(struc {struct inode *inode = mpd->inode;int err; -ext4_lblk_t blocks = (i_size_read (inode) + (1 << inode->i_blkbits) -1 ) +ext4_lblk_t blocks = (i_size_read (inode) +i_blocksize (inode) -1 ) >> inode->i_blkbits; do {
fs/ext4/move_extent.c +1 -1
@@ -187,7 +187,7 @@ mext_page_mkuptodate(struct page *page,if (PageUptodate (page))return 0 ; - blocksize =1 << inode->i_blkbits; + blocksize =i_blocksize (inode);if (!page_has_buffers (page))create_empty_buffers (page, blocksize,0 );
fs/jfs/super.c +2 -2
@@ -758,7 +758,7 @@ static ssize_t jfs_quota_read(struct sup sb->s_blocksize - offset : toread; tmp_bh.b_state =0 ; - tmp_bh.b_size =1 << inode->i_blkbits; + tmp_bh.b_size =i_blocksize (inode); err =jfs_get_block (inode, blk, &tmp_bh,0 );if (err)return err;
@@ -798,7 +798,7 @@ static ssize_t jfs_quota_write(struct su sb->s_blocksize - offset : towrite; tmp_bh.b_state =0 ; - tmp_bh.b_size =1 << inode->i_blkbits; + tmp_bh.b_size =i_blocksize (inode); err =jfs_get_block (inode, blk, &tmp_bh,1 );if (err) goto out;
fs/mpage.c +1 -1
@@ -111,7 +111,7 @@ map_buffer_to_page(struct page *page, stSetPageUptodate (page);return ; } -create_empty_buffers (page,1 << inode->i_blkbits,0 ); +create_empty_buffers (page,i_blocksize (inode),0 ); } head =page_buffers (page); page_bh = head;
fs/nfsd/blocklayout.c +2 -2
@@ -50,7 +50,7 @@ nfsd4_block_proc_layoutget(struct inode {struct nfsd4_layout_seg *seg = &args->lg_seg;struct super_block *sb = inode->i_sb; -u32 block_size = (1 << inode->i_blkbits); +u32 block_size =i_blocksize (inode);struct pnfs_block_extent *bex;struct iomap iomap;u32 device_generation =0 ;
@@ -151,7 +151,7 @@ nfsd4_block_proc_layoutcommit(struct inoint error; nr_iomaps =nfsd4_block_decode_layoutupdate (lcp->lc_up_layout, - lcp->lc_up_len, &iomaps,1 << inode->i_blkbits); + lcp->lc_up_len, &iomaps,i_blocksize (inode));if (nr_iomaps <0 )return nfserrno (nr_iomaps);
fs/nilfs2/btnode.c +1 -1
@@ -55,7 +55,7 @@ nilfs_btnode_create_block(struct addressbrelse (bh);BUG (); } -memset (bh->b_data,0 ,1 << inode->i_blkbits); +memset (bh->b_data,0 ,i_blocksize (inode)); bh->b_bdev = inode->i_sb->s_bdev; bh->b_blocknr = blocknr;set_buffer_mapped (bh);
fs/nilfs2/inode.c +2 -2
@@ -55,7 +55,7 @@ void nilfs_inode_add_blocks(struct inode {struct nilfs_root *root =NILFS_I (inode)->i_root; -inode_add_bytes (inode, (1 << inode->i_blkbits) * n); +inode_add_bytes (inode,i_blocksize (inode) * n);if (root)atomic64_add (n, &root->blocks_count); }
@@ -64,7 +64,7 @@ void nilfs_inode_sub_blocks(struct inode {struct nilfs_root *root =NILFS_I (inode)->i_root; -inode_sub_bytes (inode, (1 << inode->i_blkbits) * n); +inode_sub_bytes (inode,i_blocksize (inode) * n);if (root)atomic64_sub (n, &root->blocks_count); }
fs/nilfs2/mdt.c +2 -2
@@ -60,7 +60,7 @@ nilfs_mdt_insert_new_block(struct inodeset_buffer_mapped (bh); kaddr =kmap_atomic (bh->b_page); -memset (kaddr +bh_offset (bh),0 ,1 << inode->i_blkbits); +memset (kaddr +bh_offset (bh),0 ,i_blocksize (inode));if (init_block)init_block (inode, bh, kaddr);flush_dcache_page (bh->b_page);
@@ -503,7 +503,7 @@ void nilfs_mdt_set_entry_size(struct inostruct nilfs_mdt_info *mi =NILFS_MDT (inode); mi->mi_entry_size = entry_size; - mi->mi_entries_per_block = (1 << inode->i_blkbits) / entry_size; + mi->mi_entries_per_block =i_blocksize (inode) / entry_size; mi->mi_first_entry_offset =DIV_ROUND_UP (header_size, entry_size); }
fs/nilfs2/segment.c +1 -1
@@ -719,7 +719,7 @@ static size_t nilfs_lookup_dirty_data_bulock_page (page);if (!page_has_buffers (page)) -create_empty_buffers (page,1 << inode->i_blkbits,0 ); +create_empty_buffers (page,i_blocksize (inode),0 );unlock_page (page); bh = head =page_buffers (page);
fs/ocfs2/aops.c +1 -1
@@ -1103,7 +1103,7 @@ int ocfs2_map_page_blocks(struct page *pint ret =0 ;struct buffer_head *head, *bh, *wait[2 ], **wait_bh = wait;unsigned int block_end, block_start; -unsigned int bsize =1 << inode->i_blkbits; +unsigned int bsize =i_blocksize (inode);if (!page_has_buffers (page))create_empty_buffers (page, bsize,0 );
fs/ocfs2/file.c +1 -1
@@ -808,7 +808,7 @@ static int ocfs2_write_zero_page(struct/* We know that zero_from is block aligned */ for (block_start = zero_from; block_start < zero_to; block_start = block_end) { - block_end = block_start + (1 << inode->i_blkbits); + block_end = block_start +i_blocksize (inode);/* * block_start is block-aligned. Bump it by one to force
fs/reiserfs/file.c +1 -1
@@ -189,7 +189,7 @@ int reiserfs_commit_page(struct inode *iint ret =0 ; th.t_trans_id =0 ; - blocksize =1 << inode->i_blkbits; + blocksize =i_blocksize (inode);if (logit) {reiserfs_write_lock (s);
fs/reiserfs/inode.c +1 -1
@@ -524,7 +524,7 @@ static int reiserfs_get_blocks_direct_io* referenced in convert_tail_for_hole() that may be called from * reiserfs_get_block() */ - bh_result->b_size = (1 << inode->i_blkbits); + bh_result->b_size =i_blocksize (inode); ret =reiserfs_get_block (inode, iblock, bh_result, create |GET_BLOCK_NO_DANGLE );
fs/stat.c +1 -1
@@ -31,7 +31,7 @@ void generic_fillattr(struct inode *inod stat->atime = inode->i_atime; stat->mtime = inode->i_mtime; stat->ctime = inode->i_ctime; - stat->blksize = (1 << inode->i_blkbits); + stat->blksize =i_blocksize (inode); stat->blocks = inode->i_blocks; }
fs/udf/inode.c +1 -1
@@ -1206,7 +1206,7 @@ int udf_setsize(struct inode *inode, lof {int err;struct udf_inode_info *iinfo; -int bsize =1 << inode->i_blkbits; +int bsize =i_blocksize (inode);if (!(S_ISREG (inode->i_mode) ||S_ISDIR (inode->i_mode) ||S_ISLNK (inode->i_mode)))
fs/xfs/xfs_aops.c +5 -5
@@ -288,7 +288,7 @@ xfs_map_blocks( {struct xfs_inode *ip =XFS_I (inode);struct xfs_mount *mp = ip->i_mount; -ssize_t count =1 << inode->i_blkbits; +ssize_t count =i_blocksize (inode);xfs_fileoff_t offset_fsb, end_fsb;int error =0 ;int bmapi_flags =XFS_BMAPI_ENTIRE ;
@@ -921,7 +921,7 @@ xfs_aops_discard_page(break ; } next_buffer: - offset +=1 << inode->i_blkbits; + offset +=i_blocksize (inode); }while ((bh = bh->b_this_page) != head);
@@ -1363,7 +1363,7 @@ xfs_map_trim_size( offset + mapping_size >= i_size_read(inode)) {/* limit mapping to block that spans EOF */ mapping_size =roundup_64 (i_size_read (inode) - offset, -1 << inode->i_blkbits); +i_blocksize (inode)); }if (mapping_size >LONG_MAX ) mapping_size =LONG_MAX ;
@@ -1395,7 +1395,7 @@ __xfs_get_blocks(return -EIO ; offset = (xfs_off_t )iblock << inode->i_blkbits; -ASSERT (bh_result->b_size >= (1 << inode->i_blkbits)); +ASSERT (bh_result->b_size >=i_blocksize (inode)); size = bh_result->b_size;if (!create && direct && offset >=i_size_read (inode))
@@ -1968,7 +1968,7 @@ xfs_vm_set_page_dirty(if (offset < end_offset)set_buffer_dirty (bh); bh = bh->b_this_page; - offset +=1 << inode->i_blkbits; + offset +=i_blocksize (inode); }while (bh != head); }/*
fs/xfs/xfs_file.c +2 -2
@@ -947,7 +947,7 @@ xfs_file_fallocate(if (error) goto out_unlock; }else if (mode &FALLOC_FL_COLLAPSE_RANGE ) { -unsigned blksize_mask = (1 << inode->i_blkbits) -1 ; +unsigned int blksize_mask =i_blocksize (inode) -1 ;if (offset & blksize_mask || len & blksize_mask) { error = -EINVAL ;
@@ -969,7 +969,7 @@ xfs_file_fallocate(if (error) goto out_unlock; }else if (mode &FALLOC_FL_INSERT_RANGE ) { -unsigned blksize_mask = (1 << inode->i_blkbits) -1 ; +unsigned int blksize_mask =i_blocksize (inode) -1 ; new_size =i_size_read (inode) + len;if (offset & blksize_mask || len & blksize_mask) {
include/linux/fs.h +5 -0
@@ -680,6 +680,11 @@ struct inode {void *i_private;/* fs or device private pointer */ }; +static inline unsigned int i_blocksize (const struct inode *node) +{ +return (1 << node->i_blkbits); +} +static inline int inode_unhashed (struct inode *inode) {return hlist_unhashed (&inode->i_hash);
mm/truncate.c +1 -1
@@ -732,7 +732,7 @@ EXPORT_SYMBOL(truncate_setsize);*/ void pagecache_isize_extended (struct inode *inode,loff_t from,loff_t to) { -int bsize =1 << inode->i_blkbits; +int bsize =i_blocksize (inode);loff_t rounded_from;struct page *page;pgoff_t index;
Patches currently in stable-queue which might be from [email protected] are
queue-4.4/fs-add-i_blocksize.patch