struct xfs_inode        *ip,
        struct iomap            *iomap,
        struct xfs_bmbt_irec    *imap,
-       u16                     flags)
+       unsigned int            mapping_flags,
+       u16                     iomap_flags)
 {
        struct xfs_mount        *mp = ip->i_mount;
        struct xfs_buftarg      *target = xfs_inode_buftarg(ip);
        iomap->length = XFS_FSB_TO_B(mp, imap->br_blockcount);
        iomap->bdev = target->bt_bdev;
        iomap->dax_dev = target->bt_daxdev;
-       iomap->flags = flags;
+       iomap->flags = iomap_flags;
 
        if (xfs_ipincount(ip) &&
            (ip->i_itemp->ili_fsync_fields & ~XFS_ILOG_TIMESTAMP))
 
        xfs_iunlock(ip, lockmode);
        trace_xfs_iomap_found(ip, offset, length, XFS_DATA_FORK, &imap);
-       return xfs_bmbt_to_iomap(ip, iomap, &imap, iomap_flags);
+       return xfs_bmbt_to_iomap(ip, iomap, &imap, flags, iomap_flags);
 
 allocate_blocks:
        error = -EAGAIN;
                return error;
 
        trace_xfs_iomap_alloc(ip, offset, length, XFS_DATA_FORK, &imap);
-       return xfs_bmbt_to_iomap(ip, iomap, &imap, iomap_flags | IOMAP_F_NEW);
+       return xfs_bmbt_to_iomap(ip, iomap, &imap, flags,
+                                iomap_flags | IOMAP_F_NEW);
 
 out_found_cow:
        xfs_iunlock(ip, lockmode);
        length = XFS_FSB_TO_B(mp, cmap.br_startoff + cmap.br_blockcount);
        trace_xfs_iomap_found(ip, offset, length - offset, XFS_COW_FORK, &cmap);
        if (imap.br_startblock != HOLESTARTBLOCK) {
-               error = xfs_bmbt_to_iomap(ip, srcmap, &imap, 0);
+               error = xfs_bmbt_to_iomap(ip, srcmap, &imap, flags, 0);
                if (error)
                        return error;
        }
-       return xfs_bmbt_to_iomap(ip, iomap, &cmap, IOMAP_F_SHARED);
+       return xfs_bmbt_to_iomap(ip, iomap, &cmap, flags, IOMAP_F_SHARED);
 
 out_unlock:
        if (lockmode)
         */
        xfs_iunlock(ip, XFS_ILOCK_EXCL);
        trace_xfs_iomap_alloc(ip, offset, count, allocfork, &imap);
-       return xfs_bmbt_to_iomap(ip, iomap, &imap, IOMAP_F_NEW);
+       return xfs_bmbt_to_iomap(ip, iomap, &imap, flags, IOMAP_F_NEW);
 
 found_imap:
        xfs_iunlock(ip, XFS_ILOCK_EXCL);
-       return xfs_bmbt_to_iomap(ip, iomap, &imap, 0);
+       return xfs_bmbt_to_iomap(ip, iomap, &imap, flags, 0);
 
 found_cow:
        xfs_iunlock(ip, XFS_ILOCK_EXCL);
        if (imap.br_startoff <= offset_fsb) {
-               error = xfs_bmbt_to_iomap(ip, srcmap, &imap, 0);
+               error = xfs_bmbt_to_iomap(ip, srcmap, &imap, flags, 0);
                if (error)
                        return error;
-               return xfs_bmbt_to_iomap(ip, iomap, &cmap, IOMAP_F_SHARED);
+               return xfs_bmbt_to_iomap(ip, iomap, &cmap, flags,
+                                        IOMAP_F_SHARED);
        }
 
        xfs_trim_extent(&cmap, offset_fsb, imap.br_startoff - offset_fsb);
-       return xfs_bmbt_to_iomap(ip, iomap, &cmap, 0);
+       return xfs_bmbt_to_iomap(ip, iomap, &cmap, flags, 0);
 
 out_unlock:
        xfs_iunlock(ip, XFS_ILOCK_EXCL);
        if (error)
                return error;
        trace_xfs_iomap_found(ip, offset, length, XFS_DATA_FORK, &imap);
-       return xfs_bmbt_to_iomap(ip, iomap, &imap, shared ? IOMAP_F_SHARED : 0);
+       return xfs_bmbt_to_iomap(ip, iomap, &imap, flags,
+                                shared ? IOMAP_F_SHARED : 0);
 }
 
 const struct iomap_ops xfs_read_iomap_ops = {
                if (data_fsb < cow_fsb + cmap.br_blockcount)
                        end_fsb = min(end_fsb, data_fsb);
                xfs_trim_extent(&cmap, offset_fsb, end_fsb);
-               error = xfs_bmbt_to_iomap(ip, iomap, &cmap, IOMAP_F_SHARED);
+               error = xfs_bmbt_to_iomap(ip, iomap, &cmap, flags,
+                                         IOMAP_F_SHARED);
                /*
                 * This is a COW extent, so we must probe the page cache
                 * because there could be dirty page cache being backed
        imap.br_state = XFS_EXT_NORM;
 done:
        xfs_trim_extent(&imap, offset_fsb, end_fsb);
-       error = xfs_bmbt_to_iomap(ip, iomap, &imap, 0);
+       error = xfs_bmbt_to_iomap(ip, iomap, &imap, flags, 0);
 out_unlock:
        xfs_iunlock(ip, lockmode);
        return error;
        if (error)
                return error;
        ASSERT(nimaps);
-       return xfs_bmbt_to_iomap(ip, iomap, &imap, 0);
+       return xfs_bmbt_to_iomap(ip, iomap, &imap, flags, 0);
 }
 
 const struct iomap_ops xfs_xattr_iomap_ops = {