diff options
author | Ryan Moeller <[email protected]> | 2020-09-01 19:14:16 -0400 |
---|---|---|
committer | GitHub <[email protected]> | 2020-09-01 16:14:16 -0700 |
commit | 7b4e27232dec4595ef842ce7c0e31aafd255a20a (patch) | |
tree | e96bac7203b11fa82a0c2dad1177dfc78540ddcc /include/libzfs_impl.h | |
parent | 88d19d7cc2586fbb4fe917b16763e88bcdf62d98 (diff) |
Add 'zfs rename -u' to rename without remounting
Allow to rename file systems without remounting if it is possible.
It is possible for file systems with 'mountpoint' property set to
'legacy' or 'none' - we don't have to change mount directory for them.
Currently such file systems are unmounted on rename and not even
mounted back.
This introduces layering violation, as we need to update
'f_mntfromname' field in statfs structure related to mountpoint (for
the dataset we are renaming and all its children).
In my opinion it is worth it, as it allow to update FreeBSD in even
cleaner way - in ZFS-only configuration root file system is ZFS file
system with 'mountpoint' property set to 'legacy'. If root dataset is
named system/rootfs, we can snapshot it (system/rootfs@upgrade), clone
it (system/oldrootfs), update FreeBSD and if it doesn't boot we can
boot back from system/oldrootfs and rename it back to system/rootfs
while it is mounted as /. Before it was not possible, because
unmounting / was not possible.
Authored by: Pawel Jakub Dawidek <[email protected]>
Reviewed-by: Allan Jude <[email protected]>
Reviewed-by: Brian Behlendorf <[email protected]>
Ported by: Matt Macy <[email protected]>
Signed-off-by: Ryan Moeller <[email protected]>
Closes #10839
Diffstat (limited to 'include/libzfs_impl.h')
-rw-r--r-- | include/libzfs_impl.h | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/include/libzfs_impl.h b/include/libzfs_impl.h index 26e042964..dfb63285c 100644 --- a/include/libzfs_impl.h +++ b/include/libzfs_impl.h @@ -166,6 +166,10 @@ int zprop_expand_list(libzfs_handle_t *hdl, zprop_list_t **plp, * changelist_gather() flag to force it to iterate on mounted datasets only */ #define CL_GATHER_ITER_MOUNTED 2 +/* + * Use this changelist_gather() flag to prevent unmounting of file systems. + */ +#define CL_GATHER_DONT_UNMOUNT 4 typedef struct prop_changelist prop_changelist_t; |