mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-03-17 20:54:10 +00:00
dax fixes 5.6-rc1
- Fix RWF_NOWAIT writes to properly return -EAGAIN - Clean up an unused helper - Update dax_writeback_mapping_range to not need a block_device argument -----BEGIN PGP SIGNATURE----- iQIzBAABCAAdFiEEf41QbsdZzFdA8EfZHtKRamZ9iAIFAl5DH00ACgkQHtKRamZ9 iAIPUA/+KHTrnE4Pb69d1r/wmdNOQE1vCpZxN606ozfzAMIfCgzw6i7V82xpFUyZ VdQ1wcCSYLoPTQ+y/0Bk7SQlLjBx58c0ShaOTHmE2IRdYwzKMOBtwqy5vxGYWT/i k2b44Xdwc4x8KMdajKCZlZOWNIM4BnlhE6nqnyL7Zv7J4BC71IKTCgh0WrriKvKe t7IkYK6fLWx9Y64UhcIoXL9jDp1r5N/pJCjKaSfpS7gH+iqz/M3NaAwRfDr8UuIY aHUUoPHP/cbwakQnYZtpxGaP1dzkKQ1FG3nL74Lp2XUOulivSbGa0fmw/7Vs18Of M2d8/yKWMh0pElPdoh/2ORhHAcMOsIUCx3HRxMm1x6g293BkE96ESpbN/s62oo7H uND3AOqnE79jxd6AqECHyYXGpxwlHah5HXZdCjU5b6rmNbz9YNpHGK8STwpa2ReL AnYpWlDPjUkSMAD/rzwR7T6xh4TlzYQa2y6QR3HyffftPg6Dm0g4I8pBi0PVZYBB 4Whg8dLsiK73KZsjhraPaSFFDT42Btd6BHKLrMLckoVoIoyt3EB4FPwMQjCwXgqI WySehmiMfEqXWUEKsYxBf+j0+ASC5ewIKuP1Ziqxa9kBel7964my7ariGn/mEAbo yJ6Iyn+wEeLE5VhImZKxrBNqNPo6mripT6omJmgl2G2HZt+JfK4= =ZA5Y -----END PGP SIGNATURE----- Merge tag 'dax-fixes-5.6-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/nvdimm/nvdimm Pull dax fixes from Dan Williams: "A fix for an xfstest failure and some and an update that removes an fsdax dependency on block devices. Summary: - Fix RWF_NOWAIT writes to properly return -EAGAIN - Clean up an unused helper - Update dax_writeback_mapping_range to not need a block_device argument" * tag 'dax-fixes-5.6-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/nvdimm/nvdimm: dax: pass NOWAIT flag to iomap_apply dax: Get rid of fs_dax_get_by_host() helper dax: Pass dax_dev instead of bdev to dax_writeback_mapping_range()
This commit is contained in:
commit
359c92c02b
6 changed files with 12 additions and 24 deletions
|
@ -61,7 +61,7 @@ struct dax_device *fs_dax_get_by_bdev(struct block_device *bdev)
|
||||||
{
|
{
|
||||||
if (!blk_queue_dax(bdev->bd_queue))
|
if (!blk_queue_dax(bdev->bd_queue))
|
||||||
return NULL;
|
return NULL;
|
||||||
return fs_dax_get_by_host(bdev->bd_disk->disk_name);
|
return dax_get_by_host(bdev->bd_disk->disk_name);
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(fs_dax_get_by_bdev);
|
EXPORT_SYMBOL_GPL(fs_dax_get_by_bdev);
|
||||||
#endif
|
#endif
|
||||||
|
|
11
fs/dax.c
11
fs/dax.c
|
@ -937,12 +937,11 @@ static int dax_writeback_one(struct xa_state *xas, struct dax_device *dax_dev,
|
||||||
* on persistent storage prior to completion of the operation.
|
* on persistent storage prior to completion of the operation.
|
||||||
*/
|
*/
|
||||||
int dax_writeback_mapping_range(struct address_space *mapping,
|
int dax_writeback_mapping_range(struct address_space *mapping,
|
||||||
struct block_device *bdev, struct writeback_control *wbc)
|
struct dax_device *dax_dev, struct writeback_control *wbc)
|
||||||
{
|
{
|
||||||
XA_STATE(xas, &mapping->i_pages, wbc->range_start >> PAGE_SHIFT);
|
XA_STATE(xas, &mapping->i_pages, wbc->range_start >> PAGE_SHIFT);
|
||||||
struct inode *inode = mapping->host;
|
struct inode *inode = mapping->host;
|
||||||
pgoff_t end_index = wbc->range_end >> PAGE_SHIFT;
|
pgoff_t end_index = wbc->range_end >> PAGE_SHIFT;
|
||||||
struct dax_device *dax_dev;
|
|
||||||
void *entry;
|
void *entry;
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
unsigned int scanned = 0;
|
unsigned int scanned = 0;
|
||||||
|
@ -953,10 +952,6 @@ int dax_writeback_mapping_range(struct address_space *mapping,
|
||||||
if (!mapping->nrexceptional || wbc->sync_mode != WB_SYNC_ALL)
|
if (!mapping->nrexceptional || wbc->sync_mode != WB_SYNC_ALL)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
dax_dev = dax_get_by_host(bdev->bd_disk->disk_name);
|
|
||||||
if (!dax_dev)
|
|
||||||
return -EIO;
|
|
||||||
|
|
||||||
trace_dax_writeback_range(inode, xas.xa_index, end_index);
|
trace_dax_writeback_range(inode, xas.xa_index, end_index);
|
||||||
|
|
||||||
tag_pages_for_writeback(mapping, xas.xa_index, end_index);
|
tag_pages_for_writeback(mapping, xas.xa_index, end_index);
|
||||||
|
@ -977,7 +972,6 @@ int dax_writeback_mapping_range(struct address_space *mapping,
|
||||||
xas_lock_irq(&xas);
|
xas_lock_irq(&xas);
|
||||||
}
|
}
|
||||||
xas_unlock_irq(&xas);
|
xas_unlock_irq(&xas);
|
||||||
put_dax(dax_dev);
|
|
||||||
trace_dax_writeback_range_done(inode, xas.xa_index, end_index);
|
trace_dax_writeback_range_done(inode, xas.xa_index, end_index);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -1207,6 +1201,9 @@ dax_iomap_rw(struct kiocb *iocb, struct iov_iter *iter,
|
||||||
lockdep_assert_held(&inode->i_rwsem);
|
lockdep_assert_held(&inode->i_rwsem);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (iocb->ki_flags & IOCB_NOWAIT)
|
||||||
|
flags |= IOMAP_NOWAIT;
|
||||||
|
|
||||||
while (iov_iter_count(iter)) {
|
while (iov_iter_count(iter)) {
|
||||||
ret = iomap_apply(inode, pos, iov_iter_count(iter), flags, ops,
|
ret = iomap_apply(inode, pos, iov_iter_count(iter), flags, ops,
|
||||||
iter, dax_iomap_actor);
|
iter, dax_iomap_actor);
|
||||||
|
|
|
@ -960,8 +960,9 @@ ext2_writepages(struct address_space *mapping, struct writeback_control *wbc)
|
||||||
static int
|
static int
|
||||||
ext2_dax_writepages(struct address_space *mapping, struct writeback_control *wbc)
|
ext2_dax_writepages(struct address_space *mapping, struct writeback_control *wbc)
|
||||||
{
|
{
|
||||||
return dax_writeback_mapping_range(mapping,
|
struct ext2_sb_info *sbi = EXT2_SB(mapping->host->i_sb);
|
||||||
mapping->host->i_sb->s_bdev, wbc);
|
|
||||||
|
return dax_writeback_mapping_range(mapping, sbi->s_daxdev, wbc);
|
||||||
}
|
}
|
||||||
|
|
||||||
const struct address_space_operations ext2_aops = {
|
const struct address_space_operations ext2_aops = {
|
||||||
|
|
|
@ -2867,7 +2867,7 @@ static int ext4_dax_writepages(struct address_space *mapping,
|
||||||
percpu_down_read(&sbi->s_journal_flag_rwsem);
|
percpu_down_read(&sbi->s_journal_flag_rwsem);
|
||||||
trace_ext4_writepages(inode, wbc);
|
trace_ext4_writepages(inode, wbc);
|
||||||
|
|
||||||
ret = dax_writeback_mapping_range(mapping, inode->i_sb->s_bdev, wbc);
|
ret = dax_writeback_mapping_range(mapping, sbi->s_daxdev, wbc);
|
||||||
trace_ext4_writepages_result(inode, wbc, ret,
|
trace_ext4_writepages_result(inode, wbc, ret,
|
||||||
nr_to_write - wbc->nr_to_write);
|
nr_to_write - wbc->nr_to_write);
|
||||||
percpu_up_read(&sbi->s_journal_flag_rwsem);
|
percpu_up_read(&sbi->s_journal_flag_rwsem);
|
||||||
|
|
|
@ -587,7 +587,7 @@ xfs_dax_writepages(
|
||||||
|
|
||||||
xfs_iflags_clear(ip, XFS_ITRUNCATED);
|
xfs_iflags_clear(ip, XFS_ITRUNCATED);
|
||||||
return dax_writeback_mapping_range(mapping,
|
return dax_writeback_mapping_range(mapping,
|
||||||
xfs_inode_buftarg(ip)->bt_bdev, wbc);
|
xfs_inode_buftarg(ip)->bt_daxdev, wbc);
|
||||||
}
|
}
|
||||||
|
|
||||||
STATIC sector_t
|
STATIC sector_t
|
||||||
|
|
|
@ -129,11 +129,6 @@ static inline bool generic_fsdax_supported(struct dax_device *dax_dev,
|
||||||
sectors);
|
sectors);
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline struct dax_device *fs_dax_get_by_host(const char *host)
|
|
||||||
{
|
|
||||||
return dax_get_by_host(host);
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline void fs_put_dax(struct dax_device *dax_dev)
|
static inline void fs_put_dax(struct dax_device *dax_dev)
|
||||||
{
|
{
|
||||||
put_dax(dax_dev);
|
put_dax(dax_dev);
|
||||||
|
@ -141,7 +136,7 @@ static inline void fs_put_dax(struct dax_device *dax_dev)
|
||||||
|
|
||||||
struct dax_device *fs_dax_get_by_bdev(struct block_device *bdev);
|
struct dax_device *fs_dax_get_by_bdev(struct block_device *bdev);
|
||||||
int dax_writeback_mapping_range(struct address_space *mapping,
|
int dax_writeback_mapping_range(struct address_space *mapping,
|
||||||
struct block_device *bdev, struct writeback_control *wbc);
|
struct dax_device *dax_dev, struct writeback_control *wbc);
|
||||||
|
|
||||||
struct page *dax_layout_busy_page(struct address_space *mapping);
|
struct page *dax_layout_busy_page(struct address_space *mapping);
|
||||||
dax_entry_t dax_lock_page(struct page *page);
|
dax_entry_t dax_lock_page(struct page *page);
|
||||||
|
@ -160,11 +155,6 @@ static inline bool generic_fsdax_supported(struct dax_device *dax_dev,
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline struct dax_device *fs_dax_get_by_host(const char *host)
|
|
||||||
{
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline void fs_put_dax(struct dax_device *dax_dev)
|
static inline void fs_put_dax(struct dax_device *dax_dev)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
@ -180,7 +170,7 @@ static inline struct page *dax_layout_busy_page(struct address_space *mapping)
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline int dax_writeback_mapping_range(struct address_space *mapping,
|
static inline int dax_writeback_mapping_range(struct address_space *mapping,
|
||||||
struct block_device *bdev, struct writeback_control *wbc)
|
struct dax_device *dax_dev, struct writeback_control *wbc)
|
||||||
{
|
{
|
||||||
return -EOPNOTSUPP;
|
return -EOPNOTSUPP;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue