]> Pileus Git - ~andy/linux/commitdiff
ext4: remove i_mutex from ext4_file_sync()
authorJan Kara <jack@suse.cz>
Tue, 4 Jun 2013 18:40:39 +0000 (14:40 -0400)
committerTheodore Ts'o <tytso@mit.edu>
Tue, 4 Jun 2013 18:40:39 +0000 (14:40 -0400)
After removal of ext4_flush_unwritten_io() call, ext4_file_sync()
doesn't need i_mutex anymore. Forcing of transaction commits doesn't
need i_mutex as there's nothing inode specific in that code apart from
grabbing transaction ids from the inode. So remove the lock.

Reviewed-by: Zheng Liu <wenqing.lz@taobao.com>
Signed-off-by: Jan Kara <jack@suse.cz>
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
fs/ext4/fsync.c

index 6019bd4495763d5df4f45bfc4bf3d69b1dd81092..fc938ebbddec95382daba3b947e7b0c672a4c1e6 100644 (file)
@@ -99,20 +99,18 @@ int ext4_sync_file(struct file *file, loff_t start, loff_t end, int datasync)
        trace_ext4_sync_file_enter(file, datasync);
 
        if (inode->i_sb->s_flags & MS_RDONLY)
-               goto out_trace;
+               goto out;
 
        if (!journal) {
                ret = generic_file_fsync(file, start, end, datasync);
                if (!ret && !hlist_empty(&inode->i_dentry))
                        ret = ext4_sync_parent(inode);
-               goto out_trace;
+               goto out;
        }
 
        ret = filemap_write_and_wait_range(inode->i_mapping, start, end);
        if (ret)
                return ret;
-       mutex_lock(&inode->i_mutex);
-
        /*
         * data=writeback,ordered:
         *  The caller's filemap_fdatawrite()/wait will sync the data.
@@ -143,8 +141,6 @@ int ext4_sync_file(struct file *file, loff_t start, loff_t end, int datasync)
                        ret = err;
        }
 out:
-       mutex_unlock(&inode->i_mutex);
-out_trace:
        trace_ext4_sync_file_exit(inode, ret);
        return ret;
 }