|
@@ -2005,10 +2005,13 @@ xfs_bmap_add_extent_delay_real(
|
|
|
ASSERT(0);
|
|
|
}
|
|
|
|
|
|
- /* add reverse mapping */
|
|
|
- error = xfs_rmap_map_extent(mp, bma->dfops, bma->ip, whichfork, new);
|
|
|
- if (error)
|
|
|
- goto done;
|
|
|
+ /* add reverse mapping unless caller opted out */
|
|
|
+ if (!(bma->flags & XFS_BMAPI_NORMAP)) {
|
|
|
+ error = xfs_rmap_map_extent(mp, bma->dfops, bma->ip,
|
|
|
+ whichfork, new);
|
|
|
+ if (error)
|
|
|
+ goto done;
|
|
|
+ }
|
|
|
|
|
|
/* convert to a btree if necessary */
|
|
|
if (xfs_bmap_needs_btree(bma->ip, whichfork)) {
|
|
@@ -2672,7 +2675,8 @@ xfs_bmap_add_extent_hole_real(
|
|
|
struct xfs_bmbt_irec *new,
|
|
|
xfs_fsblock_t *first,
|
|
|
struct xfs_defer_ops *dfops,
|
|
|
- int *logflagsp)
|
|
|
+ int *logflagsp,
|
|
|
+ int flags)
|
|
|
{
|
|
|
struct xfs_ifork *ifp = XFS_IFORK_PTR(ip, whichfork);
|
|
|
struct xfs_mount *mp = ip->i_mount;
|
|
@@ -2849,10 +2853,12 @@ xfs_bmap_add_extent_hole_real(
|
|
|
break;
|
|
|
}
|
|
|
|
|
|
- /* add reverse mapping */
|
|
|
- error = xfs_rmap_map_extent(mp, dfops, ip, whichfork, new);
|
|
|
- if (error)
|
|
|
- goto done;
|
|
|
+ /* add reverse mapping unless caller opted out */
|
|
|
+ if (!(flags & XFS_BMAPI_NORMAP)) {
|
|
|
+ error = xfs_rmap_map_extent(mp, dfops, ip, whichfork, new);
|
|
|
+ if (error)
|
|
|
+ goto done;
|
|
|
+ }
|
|
|
|
|
|
/* convert to a btree if necessary */
|
|
|
if (xfs_bmap_needs_btree(ip, whichfork)) {
|
|
@@ -4127,7 +4133,8 @@ xfs_bmapi_allocate(
|
|
|
else
|
|
|
error = xfs_bmap_add_extent_hole_real(bma->tp, bma->ip,
|
|
|
whichfork, &bma->icur, &bma->cur, &bma->got,
|
|
|
- bma->firstblock, bma->dfops, &bma->logflags);
|
|
|
+ bma->firstblock, bma->dfops, &bma->logflags,
|
|
|
+ bma->flags);
|
|
|
|
|
|
bma->logflags |= tmp_logflags;
|
|
|
if (error)
|
|
@@ -4573,7 +4580,7 @@ xfs_bmapi_remap(
|
|
|
got.br_state = XFS_EXT_NORM;
|
|
|
|
|
|
error = xfs_bmap_add_extent_hole_real(tp, ip, XFS_DATA_FORK, &icur,
|
|
|
- &cur, &got, &firstblock, dfops, &logflags);
|
|
|
+ &cur, &got, &firstblock, dfops, &logflags, 0);
|
|
|
if (error)
|
|
|
goto error0;
|
|
|
|