Re: [PATCH 04/11 v2] xfs: add xfs_ilock_attr_map_shared

Ben Myers
2013-12-18T21:48:00Z

On Wed, Dec 18, 2013 at 02:14:39AM -0800, Christoph Hellwig wrote:
> Equivalent to xfs_ilock_data_map_shared, except for the attribute fork.
>
> Make xfs_getbmap use it if called for the attribute fork instead of
> xfs_ilock_data_map_shared.
>
> Signed-off-by: Christoph Hellwig <hch@lst.de>
>
> Index: xfs/fs/xfs/xfs_bmap_util.c
> ===================================================================
> --- xfs.orig/fs/xfs/xfs_bmap_util.c 2013-12-18 11:14:52.587953376 +0100
> +++ xfs/fs/xfs/xfs_bmap_util.c 2013-12-18 11:15:29.367952621 +0100
> @@ -617,22 +617,27 @@ xfs_getbmap(
> return XFS_ERROR(ENOMEM);
>
> xfs_ilock(ip, XFS_IOLOCK_SHARED);
> - if (whichfork == XFS_DATA_FORK && !(iflags & BMV_IF_DELALLOC)) {
> - if (ip->i_delayed_blks || XFS_ISIZE(ip) > ip->i_d.di_size) {
> + if (whichfork == XFS_DATA_FORK) {
> + if (!(iflags & BMV_IF_DELALLOC) &&
> + (ip->i_delayed_blks || XFS_ISIZE(ip) > ip->i_d.di_size)) {
> error = -filemap_write_and_wait(VFS_I(ip)->i_mapping);
> if (error)
> goto out_unlock_iolock;
> +
> + /*
> + * Even after flushing the inode, there can still be
> + * delalloc blocks on the inode beyond EOF due to
> + * speculative preallocation. These are not removed

This one has a 'p'.

Reviewed-by: Ben Myers <bpm@sgi.com>