|
|
@@ -4543,7 +4543,10 @@ xfs_bmapi_remap(
|
|
|
ASSERT(len > 0);
|
|
|
ASSERT(len <= (xfs_filblks_t)MAXEXTLEN);
|
|
|
ASSERT(xfs_isilocked(ip, XFS_ILOCK_EXCL));
|
|
|
- ASSERT(!(flags & ~(XFS_BMAPI_ATTRFORK)));
|
|
|
+ ASSERT(!(flags & ~(XFS_BMAPI_ATTRFORK | XFS_BMAPI_PREALLOC |
|
|
|
+ XFS_BMAPI_NORMAP)));
|
|
|
+ ASSERT((flags & (XFS_BMAPI_ATTRFORK | XFS_BMAPI_PREALLOC)) !=
|
|
|
+ (XFS_BMAPI_ATTRFORK | XFS_BMAPI_PREALLOC));
|
|
|
|
|
|
if (unlikely(XFS_TEST_ERROR(
|
|
|
(XFS_IFORK_FORMAT(ip, whichfork) != XFS_DINODE_FMT_EXTENTS &&
|
|
|
@@ -4581,7 +4584,10 @@ xfs_bmapi_remap(
|
|
|
got.br_startoff = bno;
|
|
|
got.br_startblock = startblock;
|
|
|
got.br_blockcount = len;
|
|
|
- got.br_state = XFS_EXT_NORM;
|
|
|
+ if (flags & XFS_BMAPI_PREALLOC)
|
|
|
+ got.br_state = XFS_EXT_UNWRITTEN;
|
|
|
+ else
|
|
|
+ got.br_state = XFS_EXT_NORM;
|
|
|
|
|
|
error = xfs_bmap_add_extent_hole_real(tp, ip, whichfork, &icur,
|
|
|
&cur, &got, &firstblock, dfops, &logflags, flags);
|