Re: xfs mknod regression

David Chinner
2007-12-19T00:38:18Z

On Tue, Dec 18, 2007 at 05:36:42PM +0000, Christoph Hellwig wrote:
>
> This was broken by my '[XFS] simplify xfs_create/mknod/symlink prototype',
> which assigned the re-shuffled ondisk dev_t back to the rdev variable in
> xfs_vn_mknod. Because of that i_rdev is set to the ondisk dev_t instead
> of the linux dev_t later down the function.
>
> Fortunately the fix for it is trivial: we can just remove the
> assignment because xfs_revalidate_inode has done the proper job before
> unlocking the inode.
>
>
> Signed-off-by: Christoph Hellwig <hch@lst.de>
>
> Index: linux-2.6-xfs/fs/xfs/linux-2.6/xfs_iops.c
> ===================================================================
> --- linux-2.6-xfs.orig/fs/xfs/linux-2.6/xfs_iops.c 2007-12-18 18:23:32.000000000 +0100
> +++ linux-2.6-xfs/fs/xfs/linux-2.6/xfs_iops.c 2007-12-18 18:23:43.000000000 +0100
> @@ -345,9 +345,7 @@ xfs_vn_mknod(
> ASSERT(vp);
> ip = vn_to_inode(vp);
>
> - if (S_ISCHR(mode) || S_ISBLK(mode))
> - ip->i_rdev = rdev;
> - else if (S_ISDIR(mode))
> + if (S_ISDIR(mode))
> xfs_validate_fields(ip);
> d_instantiate(dentry, ip);
> xfs_validate_fields(dir);

Thanks for this, Christoph - I'll run some tests on it and check it in.

Rafael - this is a regression introduced in 2.6.24-rc1 if you want to
track it.

Cheers,

Dave.
--
Dave Chinner
Principal Engineer
SGI Australian Software Group