|
@@ -1360,6 +1360,7 @@ xfs_fs_remount(
|
|
|
xfs_force_shutdown(mp, SHUTDOWN_CORRUPT_INCORE);
|
|
|
return error;
|
|
|
}
|
|
|
+ xfs_queue_cowblocks(mp);
|
|
|
|
|
|
/* Create the per-AG metadata reservation pool .*/
|
|
|
error = xfs_fs_reserve_ag_blocks(mp);
|
|
@@ -1369,6 +1370,14 @@ xfs_fs_remount(
|
|
|
|
|
|
/* rw -> ro */
|
|
|
if (!(mp->m_flags & XFS_MOUNT_RDONLY) && (*flags & MS_RDONLY)) {
|
|
|
+ /* Get rid of any leftover CoW reservations... */
|
|
|
+ cancel_delayed_work_sync(&mp->m_cowblocks_work);
|
|
|
+ error = xfs_icache_free_cowblocks(mp, NULL);
|
|
|
+ if (error) {
|
|
|
+ xfs_force_shutdown(mp, SHUTDOWN_CORRUPT_INCORE);
|
|
|
+ return error;
|
|
|
+ }
|
|
|
+
|
|
|
/* Free the per-AG metadata reservation pool. */
|
|
|
error = xfs_fs_unreserve_ag_blocks(mp);
|
|
|
if (error) {
|