]> Pileus Git - ~andy/linux/commitdiff
ext4: standardize error handling in ext4_da_write_inline_data_begin()
authorJan Kara <jack@suse.cz>
Mon, 6 Jan 2014 19:03:23 +0000 (14:03 -0500)
committerTheodore Ts'o <tytso@mit.edu>
Mon, 6 Jan 2014 19:03:23 +0000 (14:03 -0500)
The function has a bit non-standard (for ext4) error recovery in that it
used a mix of 'out' labels and testing for 'handle' being NULL. There
isn't a good reason for that in the function so clean it up a bit.

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

index ed6e71fe5e9d69992c47566fd10d856cda02c159..c417e52d194ee0342492ada5dc64736f508bc40d 100644 (file)
@@ -859,7 +859,6 @@ retry_journal:
        handle = ext4_journal_start(inode, EXT4_HT_INODE, 1);
        if (IS_ERR(handle)) {
                ret = PTR_ERR(handle);
-               handle = NULL;
                goto out;
        }
 
@@ -869,7 +868,7 @@ retry_journal:
        if (inline_size >= pos + len) {
                ret = ext4_prepare_inline_data(handle, inode, pos + len);
                if (ret && ret != -ENOSPC)
-                       goto out;
+                       goto out_journal;
        }
 
        if (ret == -ENOSPC) {
@@ -878,7 +877,6 @@ retry_journal:
                                                            flags,
                                                            fsdata);
                ext4_journal_stop(handle);
-               handle = NULL;
                if (ret == -ENOSPC &&
                    ext4_should_retry_alloc(inode->i_sb, &retries))
                        goto retry_journal;
@@ -894,7 +892,7 @@ retry_journal:
        page = grab_cache_page_write_begin(mapping, 0, flags);
        if (!page) {
                ret = -ENOMEM;
-               goto out;
+               goto out_journal;
        }
 
        down_read(&EXT4_I(inode)->xattr_sem);
@@ -911,16 +909,15 @@ retry_journal:
 
        up_read(&EXT4_I(inode)->xattr_sem);
        *pagep = page;
-       handle = NULL;
        brelse(iloc.bh);
        return 1;
 out_release_page:
        up_read(&EXT4_I(inode)->xattr_sem);
        unlock_page(page);
        page_cache_release(page);
+out_journal:
+       ext4_journal_stop(handle);
 out:
-       if (handle)
-               ext4_journal_stop(handle);
        brelse(iloc.bh);
        return ret;
 }