diff options
Diffstat (limited to 'fs/xfs/xfs_bmap_util.c')
| -rw-r--r-- | fs/xfs/xfs_bmap_util.c | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/fs/xfs/xfs_bmap_util.c b/fs/xfs/xfs_bmap_util.c index cd9a5400ba4f..bc6c6e10a969 100644 --- a/fs/xfs/xfs_bmap_util.c +++ b/fs/xfs/xfs_bmap_util.c | |||
| @@ -1459,7 +1459,19 @@ xfs_shift_file_space( | |||
| 1459 | return error; | 1459 | return error; |
| 1460 | 1460 | ||
| 1461 | /* | 1461 | /* |
| 1462 | * The extent shiting code works on extent granularity. So, if | 1462 | * Clean out anything hanging around in the cow fork now that |
| 1463 | * we've flushed all the dirty data out to disk to avoid having | ||
| 1464 | * CoW extents at the wrong offsets. | ||
| 1465 | */ | ||
| 1466 | if (xfs_is_reflink_inode(ip)) { | ||
| 1467 | error = xfs_reflink_cancel_cow_range(ip, offset, NULLFILEOFF, | ||
| 1468 | true); | ||
| 1469 | if (error) | ||
| 1470 | return error; | ||
| 1471 | } | ||
| 1472 | |||
| 1473 | /* | ||
| 1474 | * The extent shifting code works on extent granularity. So, if | ||
| 1463 | * stop_fsb is not the starting block of extent, we need to split | 1475 | * stop_fsb is not the starting block of extent, we need to split |
| 1464 | * the extent at stop_fsb. | 1476 | * the extent at stop_fsb. |
| 1465 | */ | 1477 | */ |
