diff options
author | Brian Behlendorf <[email protected]> | 2019-01-15 15:46:58 -0800 |
---|---|---|
committer | GitHub <[email protected]> | 2019-01-15 15:46:58 -0800 |
commit | 6e91a72fe3ff8bb282490773bd687632f3e8c79d (patch) | |
tree | 3eeada19664d8b2b4449c55fdb90c76fed5e17dc /man | |
parent | 5e7f3ace5807f950f3529361e03970101e61aa44 (diff) |
Disable 'zfs remap' command
The implementation of 'zfs remap' has proven to be problematic since
it modifies the objset (but not its logical contents) by dirtying
metadata without owning it. The consequence of which is that
dmu_objset_remap_indirects() is vulnerable to certain races.
For example, if we are in the middle of receiving into the filesystem
while it is being remapped. Then it is possible we could evict the
objset when the receive completes (see dsl_dataset_clone_swap_sync_impl,
or dmu_recv_end_sync), but dmu_objset_remap_indirects() may be still
using the objset. The result of which would be a panic.
Extended runs of ztest(8) have exposed other possible races which
can occur when using 'zfs remap'. Several of these have been fixed
but there may be others which have not yet been encountered and
diagnosed.
Furthermore, the ability to manually remap a filesystem is no longer
particularly useful now that the removal code can map large chunks.
Coupled with the fact that explaining what this command does and why
it may be useful requires a detailed understanding of the internals
of device removal. These are details users should not be bothered
with.
Therefore, the 'zfs remap' command is being disabled but not entirely
removed. It may be removed in the future or potentially reworked
to address the issues described above. Since 'zfs remap' has never
been part of a tagged release its removal is expected to have
minimal impact.
The ZTS tests have been updated to continue to exercise the command
to prevent atrophy, but it has been removed entirely from ztest(8).
Reviewed by: Matt Ahrens <[email protected]>
Reviewed by: Tom Caputi <[email protected]>
Signed-off-by: Brian Behlendorf <[email protected]>
Closes #8238
Diffstat (limited to 'man')
-rw-r--r-- | man/man5/zpool-features.5 | 3 | ||||
-rw-r--r-- | man/man8/zfs.8 | 13 |
2 files changed, 1 insertions, 15 deletions
diff --git a/man/man5/zpool-features.5 b/man/man5/zpool-features.5 index c1f6ee6e4..4769c4eac 100644 --- a/man/man5/zpool-features.5 +++ b/man/man5/zpool-features.5 @@ -475,8 +475,7 @@ DEPENDENCIES device_removal This feature is an enhancement of device_removal, which will over time reduce the memory used to track removed devices. When indirect blocks are freed or remapped, we note that their part of the indirect mapping -is "obsolete", i.e. no longer needed. See also the \fBzfs remap\fR -subcommand in \fBzfs\fR(1M). +is "obsolete", i.e. no longer needed. This feature becomes \fBactive\fR when the "zpool remove" command is used on a top-level vdev, and will never return to being \fBenabled\fR. diff --git a/man/man8/zfs.8 b/man/man8/zfs.8 index df904d0bd..be28f2b62 100644 --- a/man/man8/zfs.8 +++ b/man/man8/zfs.8 @@ -103,9 +103,6 @@ .Oo Fl t Ar type Ns Oo , Ns Ar type Oc Ns ... Oc .Oo Ar filesystem Ns | Ns Ar volume Ns | Ns Ar snapshot Oc Ns ... .Nm -.Cm remap -.Ar filesystem Ns | Ns Ar volume -.Nm .Cm set .Ar property Ns = Ns Ar value Oo Ar property Ns = Ns Ar value Oc Ns ... .Ar filesystem Ns | Ns Ar volume Ns | Ns Ar snapshot Ns ... @@ -3037,16 +3034,6 @@ option was not specified. .El .It Xo .Nm -.Cm remap -.Ar filesystem Ns | Ns Ar volume -.Xc -Remap the indirect blocks in the given fileystem or volume so that they no -longer reference blocks on previously removed vdevs and we can eventually -shrink the size of the indirect mapping objects for the previously removed -vdevs. Note that remapping all blocks might not be possible and that -references from snapshots will still exist and cannot be remapped. -.It Xo -.Nm .Cm upgrade .Xc Displays a list of file systems that are not the most recent version. |