ext4: down i_data_sem only for read when walking tree for fiemap
authorTheodore Ts'o <tytso@mit.edu>
Mon, 18 May 2009 03:31:23 +0000 (23:31 -0400)
committerTheodore Ts'o <tytso@mit.edu>
Mon, 18 May 2009 03:31:23 +0000 (23:31 -0400)
Not sure why I put this in as down_write originally; all we are
doing is walking the tree, nothing will change under us and
concurrent reads should be no problem.

Signed-off-by: Eric Sandeen <sandeen@redhat.com>
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
fs/ext4/extents.c

index d04b779b780ec40ccbdd53299ac5dde37deb2552..d4e99e96fddb211a0e8991e87d0ec1c771ec2131 100644 (file)
@@ -3312,10 +3312,10 @@ int ext4_fiemap(struct inode *inode, struct fiemap_extent_info *fieinfo,
                 * Walk the extent tree gathering extent information.
                 * ext4_ext_fiemap_cb will push extents back to user.
                 */
-               down_write(&EXT4_I(inode)->i_data_sem);
+               down_read(&EXT4_I(inode)->i_data_sem);
                error = ext4_ext_walk_space(inode, start_blk, len_blks,
                                          ext4_ext_fiemap_cb, fieinfo);
-               up_write(&EXT4_I(inode)->i_data_sem);
+               up_read(&EXT4_I(inode)->i_data_sem);
        }
 
        return error;