]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
4.4-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 12 Jun 2017 11:39:47 +0000 (13:39 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 12 Jun 2017 11:39:47 +0000 (13:39 +0200)
added patches:
fs-add-i_blocksize.patch

queue-4.4/fs-add-i_blocksize.patch [new file with mode: 0644]
queue-4.4/series

diff --git a/queue-4.4/fs-add-i_blocksize.patch b/queue-4.4/fs-add-i_blocksize.patch
new file mode 100644 (file)
index 0000000..27cca60
--- /dev/null
@@ -0,0 +1,430 @@
+From 93407472a21b82f39c955ea7787e5bc7da100642 Mon Sep 17 00:00:00 2001
+From: Fabian Frederick <fabf@skynet.be>
+Date: Mon, 27 Feb 2017 14:28:32 -0800
+Subject: fs: add i_blocksize()
+
+From: Fabian Frederick <fabf@skynet.be>
+
+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.
+
+[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>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ 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(-)
+
+--- a/fs/btrfs/file.c
++++ b/fs/btrfs/file.c
+@@ -2771,7 +2771,7 @@ static long btrfs_fallocate(struct file
+               if (!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);
+--- a/fs/buffer.c
++++ b/fs/buffer.c
+@@ -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_sp
+       struct 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_s
+       struct 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 addre
+       struct 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;
+ }
+--- a/fs/ceph/addr.c
++++ b/fs/ceph/addr.c
+@@ -697,7 +697,7 @@ static int ceph_writepages_start(struct
+       struct 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;
+--- a/fs/direct-io.c
++++ b/fs/direct-io.c
+@@ -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.
+--- a/fs/ext4/inode.c
++++ b/fs/ext4/inode.c
+@@ -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 {
+--- a/fs/ext4/move_extent.c
++++ b/fs/ext4/move_extent.c
+@@ -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);
+--- a/fs/jfs/super.c
++++ b/fs/jfs/super.c
+@@ -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;
+--- a/fs/mpage.c
++++ b/fs/mpage.c
+@@ -111,7 +111,7 @@ map_buffer_to_page(struct page *page, st
+                       SetPageUptodate(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;
+--- a/fs/nfsd/blocklayout.c
++++ b/fs/nfsd/blocklayout.c
+@@ -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 ino
+       int 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);
+--- a/fs/nilfs2/btnode.c
++++ b/fs/nilfs2/btnode.c
+@@ -55,7 +55,7 @@ nilfs_btnode_create_block(struct address
+               brelse(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);
+--- a/fs/nilfs2/inode.c
++++ b/fs/nilfs2/inode.c
+@@ -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);
+ }
+--- a/fs/nilfs2/mdt.c
++++ b/fs/nilfs2/mdt.c
+@@ -60,7 +60,7 @@ nilfs_mdt_insert_new_block(struct inode
+       set_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 ino
+       struct 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);
+ }
+--- a/fs/nilfs2/segment.c
++++ b/fs/nilfs2/segment.c
+@@ -719,7 +719,7 @@ static size_t nilfs_lookup_dirty_data_bu
+               lock_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);
+--- a/fs/ocfs2/aops.c
++++ b/fs/ocfs2/aops.c
+@@ -1103,7 +1103,7 @@ int ocfs2_map_page_blocks(struct page *p
+       int 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);
+--- a/fs/ocfs2/file.c
++++ b/fs/ocfs2/file.c
+@@ -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
+--- a/fs/reiserfs/file.c
++++ b/fs/reiserfs/file.c
+@@ -189,7 +189,7 @@ int reiserfs_commit_page(struct inode *i
+       int ret = 0;
+       th.t_trans_id = 0;
+-      blocksize = 1 << inode->i_blkbits;
++      blocksize = i_blocksize(inode);
+       if (logit) {
+               reiserfs_write_lock(s);
+--- a/fs/reiserfs/inode.c
++++ b/fs/reiserfs/inode.c
+@@ -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);
+--- a/fs/stat.c
++++ b/fs/stat.c
+@@ -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;
+ }
+--- a/fs/udf/inode.c
++++ b/fs/udf/inode.c
+@@ -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)))
+--- a/fs/xfs/xfs_aops.c
++++ b/fs/xfs/xfs_aops.c
+@@ -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);
+       }
+       /*
+--- a/fs/xfs/xfs_file.c
++++ b/fs/xfs/xfs_file.c
+@@ -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) {
+--- a/include/linux/fs.h
++++ b/include/linux/fs.h
+@@ -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);
+--- a/mm/truncate.c
++++ b/mm/truncate.c
+@@ -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;
index 7c22fb44ed0ce34dfcc31b9bc322732a532dc7d3..343db9db43a892f6208660fd53e05874e5d2aef9 100644 (file)
@@ -51,6 +51,7 @@ target-re-add-check-to-reject-control-writes-with-overflow-data.patch
 drm-msm-expose-our-reservation-object-when-exporting-a-dmabuf.patch
 input-elantech-add-fujitsu-lifebook-e546-e557-to-force-crc_enabled.patch
 cpuset-consider-dying-css-as-offline.patch
+fs-add-i_blocksize.patch
 ufs-restore-proper-tail-allocation.patch
 fix-ufs_isblockset.patch
 ufs-restore-maintaining-i_blocks.patch