Merge tag 'ext4_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso...
[linux-2.6-microblaze.git] / fs / ext4 / inode.c
index 34d7e07..b54b261 100644 (file)
@@ -391,7 +391,7 @@ void ext4_da_update_reserve_space(struct inode *inode,
         * inode's preallocations.
         */
        if ((ei->i_reserved_data_blocks == 0) &&
-           (atomic_read(&inode->i_writecount) == 0))
+           !inode_is_open_for_write(inode))
                ext4_discard_preallocations(inode);
 }
 
@@ -415,7 +415,7 @@ int ext4_issue_zeroout(struct inode *inode, ext4_lblk_t lblk, ext4_fsblk_t pblk,
 {
        int ret;
 
-       if (ext4_encrypted_inode(inode))
+       if (IS_ENCRYPTED(inode))
                return fscrypt_zeroout_range(inode, lblk, pblk, len);
 
        ret = sb_issue_zeroout(inode->i_sb, pblk, len, GFP_NOFS);
@@ -678,8 +678,6 @@ found:
                if (flags & EXT4_GET_BLOCKS_ZERO &&
                    map->m_flags & EXT4_MAP_MAPPED &&
                    map->m_flags & EXT4_MAP_NEW) {
-                       clean_bdev_aliases(inode->i_sb->s_bdev, map->m_pblk,
-                                          map->m_len);
                        ret = ext4_issue_zeroout(inode, map->m_lblk,
                                                 map->m_pblk, map->m_len);
                        if (ret) {
@@ -1150,7 +1148,7 @@ int do_journal_get_write_access(handle_t *handle,
        return ret;
 }
 
-#ifdef CONFIG_EXT4_FS_ENCRYPTION
+#ifdef CONFIG_FS_ENCRYPTION
 static int ext4_block_write_begin(struct page *page, loff_t pos, unsigned len,
                                  get_block_t *get_block)
 {
@@ -1194,7 +1192,6 @@ static int ext4_block_write_begin(struct page *page, loff_t pos, unsigned len,
                        if (err)
                                break;
                        if (buffer_new(bh)) {
-                               clean_bdev_bh_alias(bh);
                                if (PageUptodate(page)) {
                                        clear_buffer_new(bh);
                                        set_buffer_uptodate(bh);
@@ -1217,8 +1214,7 @@ static int ext4_block_write_begin(struct page *page, loff_t pos, unsigned len,
                    (block_start < from || block_end > to)) {
                        ll_rw_block(REQ_OP_READ, 0, 1, &bh);
                        *wait_bh++ = bh;
-                       decrypt = ext4_encrypted_inode(inode) &&
-                               S_ISREG(inode->i_mode);
+                       decrypt = IS_ENCRYPTED(inode) && S_ISREG(inode->i_mode);
                }
        }
        /*
@@ -1303,7 +1299,7 @@ retry_journal:
        /* In case writeback began while the page was unlocked */
        wait_for_stable_page(page);
 
-#ifdef CONFIG_EXT4_FS_ENCRYPTION
+#ifdef CONFIG_FS_ENCRYPTION
        if (ext4_should_dioread_nolock(inode))
                ret = ext4_block_write_begin(page, pos, len,
                                             ext4_get_block_unwritten);
@@ -2490,10 +2486,6 @@ static int mpage_map_one_extent(handle_t *handle, struct mpage_da_data *mpd)
        }
 
        BUG_ON(map->m_len == 0);
-       if (map->m_flags & EXT4_MAP_NEW) {
-               clean_bdev_aliases(inode->i_sb->s_bdev, map->m_pblk,
-                                  map->m_len);
-       }
        return 0;
 }
 
@@ -2836,12 +2828,12 @@ retry:
                goto unplug;
        }
        ret = mpage_prepare_extent_to_map(&mpd);
+       /* Unlock pages we didn't use */
+       mpage_release_unused_pages(&mpd, false);
        /* Submit prepared bio */
        ext4_io_submit(&mpd.io_submit);
        ext4_put_io_end_defer(mpd.io_submit.io_end);
        mpd.io_submit.io_end = NULL;
-       /* Unlock pages we didn't use */
-       mpage_release_unused_pages(&mpd, false);
        if (ret < 0)
                goto unplug;
 
@@ -2909,10 +2901,11 @@ retry:
                        handle = NULL;
                        mpd.do_map = 0;
                }
-               /* Submit prepared bio */
-               ext4_io_submit(&mpd.io_submit);
                /* Unlock pages we didn't use */
                mpage_release_unused_pages(&mpd, give_up_on_write);
+               /* Submit prepared bio */
+               ext4_io_submit(&mpd.io_submit);
+
                /*
                 * Drop our io_end reference we got from init. We have
                 * to be careful and use deferred io_end finishing if
@@ -3105,7 +3098,7 @@ retry_journal:
        /* In case writeback began while the page was unlocked */
        wait_for_stable_page(page);
 
-#ifdef CONFIG_EXT4_FS_ENCRYPTION
+#ifdef CONFIG_FS_ENCRYPTION
        ret = ext4_block_write_begin(page, pos, len,
                                     ext4_da_get_block_prep);
 #else
@@ -3880,8 +3873,8 @@ static ssize_t ext4_direct_IO(struct kiocb *iocb, struct iov_iter *iter)
        loff_t offset = iocb->ki_pos;
        ssize_t ret;
 
-#ifdef CONFIG_EXT4_FS_ENCRYPTION
-       if (ext4_encrypted_inode(inode) && S_ISREG(inode->i_mode))
+#ifdef CONFIG_FS_ENCRYPTION
+       if (IS_ENCRYPTED(inode) && S_ISREG(inode->i_mode))
                return 0;
 #endif
 
@@ -4065,8 +4058,7 @@ static int __ext4_block_zero_page_range(handle_t *handle,
                /* Uhhuh. Read error. Complain and punt. */
                if (!buffer_uptodate(bh))
                        goto unlock;
-               if (S_ISREG(inode->i_mode) &&
-                   ext4_encrypted_inode(inode)) {
+               if (S_ISREG(inode->i_mode) && IS_ENCRYPTED(inode)) {
                        /* We expect the key to be set. */
                        BUG_ON(!fscrypt_has_encryption_key(inode));
                        BUG_ON(blocksize != PAGE_SIZE);
@@ -4142,7 +4134,7 @@ static int ext4_block_truncate_page(handle_t *handle,
        struct inode *inode = mapping->host;
 
        /* If we are processing an encrypted inode during orphan list handling */
-       if (ext4_encrypted_inode(inode) && !fscrypt_has_encryption_key(inode))
+       if (IS_ENCRYPTED(inode) && !fscrypt_has_encryption_key(inode))
                return 0;
 
        blocksize = inode->i_sb->s_blocksize;
@@ -4722,7 +4714,7 @@ static bool ext4_should_use_dax(struct inode *inode)
                return false;
        if (ext4_has_inline_data(inode))
                return false;
-       if (ext4_encrypted_inode(inode))
+       if (ext4_test_inode_flag(inode, EXT4_INODE_ENCRYPT))
                return false;
        return true;
 }
@@ -5072,7 +5064,7 @@ struct inode *__ext4_iget(struct super_block *sb, unsigned long ino,
                        ret = -EFSCORRUPTED;
                        goto bad_inode;
                }
-               if (ext4_encrypted_inode(inode)) {
+               if (IS_ENCRYPTED(inode)) {
                        inode->i_op = &ext4_encrypted_symlink_inode_operations;
                        ext4_set_aops(inode);
                } else if (ext4_inode_is_fast_symlink(inode)) {
@@ -5351,7 +5343,6 @@ static int ext4_do_update_inode(handle_t *handle,
                err = ext4_journal_get_write_access(handle, EXT4_SB(sb)->s_sbh);
                if (err)
                        goto out_brelse;
-               ext4_update_dynamic_rev(sb);
                ext4_set_feature_large_file(sb);
                ext4_handle_sync(handle);
                err = ext4_handle_dirty_super(handle, sb);
@@ -6002,7 +5993,7 @@ int ext4_expand_extra_isize(struct inode *inode,
 
        ext4_write_lock_xattr(inode, &no_expand);
 
-       BUFFER_TRACE(iloc.bh, "get_write_access");
+       BUFFER_TRACE(iloc->bh, "get_write_access");
        error = ext4_journal_get_write_access(handle, iloc->bh);
        if (error) {
                brelse(iloc->bh);