]> git.kernelconcepts.de Git - karo-tx-linux.git/blobdiff - fs/xfs/xfs_iomap.c
Merge tag 'xfs-4.12-merge-7' of git://git.kernel.org/pub/scm/fs/xfs/xfs-linux
[karo-tx-linux.git] / fs / xfs / xfs_iomap.c
index b2f0901bb517e52792b83941e444fe9826b6246a..a63f61c256bdc54f0a8ee6088702dbd5e91ee9aa 100644 (file)
@@ -976,6 +976,7 @@ xfs_file_iomap_begin(
        int                     nimaps = 1, error = 0;
        bool                    shared = false, trimmed = false;
        unsigned                lockmode;
+       struct block_device     *bdev;
 
        if (XFS_FORCED_SHUTDOWN(mp))
                return -EIO;
@@ -1063,6 +1064,14 @@ xfs_file_iomap_begin(
        }
 
        xfs_bmbt_to_iomap(ip, iomap, &imap);
+
+       /* optionally associate a dax device with the iomap bdev */
+       bdev = iomap->bdev;
+       if (blk_queue_dax(bdev->bd_queue))
+               iomap->dax_dev = dax_get_by_host(bdev->bd_disk->disk_name);
+       else
+               iomap->dax_dev = NULL;
+
        if (shared)
                iomap->flags |= IOMAP_F_SHARED;
        return 0;
@@ -1140,6 +1149,7 @@ xfs_file_iomap_end(
        unsigned                flags,
        struct iomap            *iomap)
 {
+       put_dax(iomap->dax_dev);
        if ((flags & IOMAP_WRITE) && iomap->type == IOMAP_DELALLOC)
                return xfs_file_iomap_end_delalloc(XFS_I(inode), offset,
                                length, written, iomap);