ext4: Get rid of EXTEND_DISKSIZE flag of ext4_get_blocks_handle()
authorJan Kara <jack@suse.cz>
Tue, 9 Jun 2009 04:17:05 +0000 (00:17 -0400)
committerTheodore Ts'o <tytso@mit.edu>
Tue, 9 Jun 2009 04:17:05 +0000 (00:17 -0400)
Get rid of EXTEND_DISKSIZE flag of ext4_get_blocks_handle(). This
seems to be a relict from some old days and setting disksize in this
function does not make much sense.  Currently it was set only by
ext4_getblk().  Since the parameter has some effect only if create ==
1, it is easy to check by grepping through the sources that the three
callers which end up calling ext4_getblk() with create == 1
(ext4_append, ext4_quota_write, ext4_mkdir) do the right thing and set
disksize themselves.

Signed-off-by: Jan Kara <jack@suse.cz>
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>

fs/ext4/ext4.h
fs/ext4/extents.c
fs/ext4/inode.c

index 4311cc8..59657ff 100644 (file)
@@ -323,15 +323,13 @@ struct ext4_new_group_data {
 #define EXT4_GET_BLOCKS_UNINIT_EXT             0x0002
 #define EXT4_GET_BLOCKS_CREATE_UNINIT_EXT      (EXT4_GET_BLOCKS_UNINIT_EXT|\
                                                 EXT4_GET_BLOCKS_CREATE)
-       /* Update the ext4_inode_info i_disksize field */
-#define EXT4_GET_BLOCKS_EXTEND_DISKSIZE                0x0004
        /* Caller is from the delayed allocation writeout path,
           so set the magic i_delalloc_reserve_flag after taking the 
           inode allocation semaphore for */
-#define EXT4_GET_BLOCKS_DELALLOC_RESERVE       0x0008
+#define EXT4_GET_BLOCKS_DELALLOC_RESERVE       0x0004
        /* Call ext4_da_update_reserve_space() after successfully 
           allocating the blocks */
-#define EXT4_GET_BLOCKS_UPDATE_RESERVE_SPACE   0x0010
+#define EXT4_GET_BLOCKS_UPDATE_RESERVE_SPACE   0x0008
 
 
 /*
index d4e99e9..9c35a7b 100644 (file)
@@ -2779,7 +2779,6 @@ int ext4_ext_get_blocks(handle_t *handle, struct inode *inode,
        int err = 0, depth, ret, cache_type;
        unsigned int allocated = 0;
        struct ext4_allocation_request ar;
-       loff_t disksize;
 
        __clear_bit(BH_New, &bh_result->b_state);
        ext_debug("blocks %u/%u requested for inode %u\n",
@@ -2969,14 +2968,6 @@ int ext4_ext_get_blocks(handle_t *handle, struct inode *inode,
        newblock = ext_pblock(&newex);
        allocated = ext4_ext_get_actual_len(&newex);
 outnew:
-       if (flags & EXT4_GET_BLOCKS_EXTEND_DISKSIZE) {
-               disksize = ((loff_t) iblock + ar.len) << inode->i_blkbits;
-               if (disksize > i_size_read(inode))
-                       disksize = i_size_read(inode);
-               if (disksize > EXT4_I(inode)->i_disksize)
-                       EXT4_I(inode)->i_disksize = disksize;
-       }
-
        set_buffer_new(bh_result);
 
        /* Cache only when it is _not_ an uninitialized extent */
index 14c00ff..17ed0d2 100644 (file)
@@ -933,11 +933,8 @@ static int ext4_ind_get_blocks(handle_t *handle, struct inode *inode,
        int indirect_blks;
        int blocks_to_boundary = 0;
        int depth;
-       struct ext4_inode_info *ei = EXT4_I(inode);
        int count = 0;
        ext4_fsblk_t first_block = 0;
-       loff_t disksize;
-
 
        J_ASSERT(!(EXT4_I(inode)->i_flags & EXT4_EXTENTS_FL));
        J_ASSERT(handle != NULL || (flags & EXT4_GET_BLOCKS_CREATE) == 0);
@@ -1003,19 +1000,7 @@ static int ext4_ind_get_blocks(handle_t *handle, struct inode *inode,
        if (!err)
                err = ext4_splice_branch(handle, inode, iblock,
                                        partial, indirect_blks, count);
-       /*
-        * i_disksize growing is protected by i_data_sem.  Don't forget to
-        * protect it if you're about to implement concurrent
-        * ext4_get_block() -bzzz
-       */
-       if (!err && (flags & EXT4_GET_BLOCKS_EXTEND_DISKSIZE)) {
-               disksize = ((loff_t) iblock + count) << inode->i_blkbits;
-               if (disksize > i_size_read(inode))
-                       disksize = i_size_read(inode);
-               if (disksize > ei->i_disksize)
-                       ei->i_disksize = disksize;
-       }
-       if (err)
+       else 
                goto cleanup;
 
        set_buffer_new(bh_result);
@@ -1321,7 +1306,7 @@ struct buffer_head *ext4_getblk(handle_t *handle, struct inode *inode,
 {
        struct buffer_head dummy;
        int fatal = 0, err;
-       int flags = EXT4_GET_BLOCKS_EXTEND_DISKSIZE;
+       int flags = 0;
 
        J_ASSERT(handle != NULL || create == 0);
 
@@ -2153,9 +2138,7 @@ static int mpage_da_map_blocks(struct mpage_da_data *mpd)
        }
 
        /*
-        * Update on-disk size along with block allocation we don't
-        * use EXT4_GET_BLOCKS_EXTEND_DISKSIZE as size may change
-        * within already allocated block -bzzz
+        * Update on-disk size along with block allocation.
         */
        disksize = ((loff_t) next + blks) << mpd->inode->i_blkbits;
        if (disksize > i_size_read(mpd->inode))