| To: | Ross Zwisler <ross.zwisler@xxxxxxxxxxxxxxx> |
|---|---|
| Subject: | Re: [PATCH 1/2] dax: pass bdev argument to dax_clear_blocks() |
| From: | Dave Chinner <david@xxxxxxxxxxxxx> |
| Date: | Mon, 8 Feb 2016 09:03:29 +1100 |
| Cc: | linux-kernel@xxxxxxxxxxxxxxx, Theodore Ts'o <tytso@xxxxxxx>, Alexander Viro <viro@xxxxxxxxxxxxxxxxxx>, Andreas Dilger <adilger.kernel@xxxxxxxxx>, Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx>, Dan Williams <dan.j.williams@xxxxxxxxx>, Jan Kara <jack@xxxxxxxx>, Matthew Wilcox <willy@xxxxxxxxxxxxxxx>, linux-ext4@xxxxxxxxxxxxxxx, linux-fsdevel@xxxxxxxxxxxxxxx, linux-mm@xxxxxxxxx, linux-nvdimm@xxxxxxxxxxxx, xfs@xxxxxxxxxxx |
| Delivered-to: | xfs@xxxxxxxxxxx |
| In-reply-to: | <1454829553-29499-2-git-send-email-ross.zwisler@xxxxxxxxxxxxxxx> |
| References: | <1454829553-29499-1-git-send-email-ross.zwisler@xxxxxxxxxxxxxxx> <1454829553-29499-2-git-send-email-ross.zwisler@xxxxxxxxxxxxxxx> |
| User-agent: | Mutt/1.5.21 (2010-09-15) |
On Sun, Feb 07, 2016 at 12:19:12AM -0700, Ross Zwisler wrote: > dax_clear_blocks() needs a valid struct block_device and previously it was > using inode->i_sb->s_bdev in all cases. This is correct for normal inodes > on mounted ext2, ext4 and XFS filesystems, but is incorrect for DAX raw > block devices and for XFS real-time devices. > > Instead, have the caller pass in a struct block_device pointer which it > knows to be correct. .... > diff --git a/fs/xfs/xfs_bmap_util.c b/fs/xfs/xfs_bmap_util.c > index 07ef29b..f722ba2 100644 > --- a/fs/xfs/xfs_bmap_util.c > +++ b/fs/xfs/xfs_bmap_util.c > @@ -73,9 +73,11 @@ xfs_zero_extent( > xfs_daddr_t sector = xfs_fsb_to_db(ip, start_fsb); > sector_t block = XFS_BB_TO_FSBT(mp, sector); > ssize_t size = XFS_FSB_TO_B(mp, count_fsb); > + struct inode *inode = VFS_I(ip); > > if (IS_DAX(VFS_I(ip))) > - return dax_clear_blocks(VFS_I(ip), block, size); > + return dax_clear_blocks(inode, xfs_find_bdev_for_inode(inode), > + block, size); Get rid of the local inode variable and use VFS_I(ip) like the code originally did. Do not change code that is unrelated to the modifcation being made, especially when it results in making the code an inconsistent mess of mixed pointer constructs.... Cheers, Dave. -- Dave Chinner david@xxxxxxxxxxxxx |
| <Prev in Thread] | Current Thread | [Next in Thread> |
|---|---|---|
| ||
| Previous by Date: | Re: [PATCH 2/2] dax: move writeback calls into the filesystems, Dave Chinner |
|---|---|
| Next by Date: | Re: [PATCH 2/3] xfs: don't use ioends for direct write completions, Dave Chinner |
| Previous by Thread: | Re: [PATCH 1/2] dax: pass bdev argument to dax_clear_blocks(), Ross Zwisler |
| Next by Thread: | Re: [PATCH 1/2] dax: pass bdev argument to dax_clear_blocks(), Ross Zwisler |
| Indexes: | [Date] [Thread] [Top] [All Lists] |