fuse_loop: add automatic cleanup of run files and dangling instances
A 'map' call will only clean up what it needs, that is only leftover files or dangling instances of it's own name. For a full cleanup the user can call 'unmap' without any arguments. The 'cleanup on error' behaviour of map_loop is removed. It is no longer needed (since the next call will clean up anyway), and in fact fixes a bug where trying to map an image twice would result in an error, but also cleanup the .pid file of the running instance, causing 'unmap' to fail afterwards. Signed-off-by: Stefan Reiter <s.reiter@proxmox.com>
This commit is contained in:
committed by
Dietmar Maurer
parent
2d7d6e61be
commit
2deee0e01f
@ -83,7 +83,8 @@ const API_METHOD_UNMAP: ApiMethod = ApiMethod::new(
|
||||
"Unmap a loop device mapped with 'map' and release all resources.",
|
||||
&sorted!([
|
||||
("name", true, &StringSchema::new(
|
||||
"Archive name, path to loopdev (/dev/loopX) or loop device number. Omit to list all current mappings."
|
||||
concat!("Archive name, path to loopdev (/dev/loopX) or loop device number. ",
|
||||
"Omit to list all current mappings and force cleaning up leftover instances.")
|
||||
).schema()),
|
||||
]),
|
||||
)
|
||||
@ -337,6 +338,7 @@ fn unmap(
|
||||
let mut name = match param["name"].as_str() {
|
||||
Some(name) => name.to_owned(),
|
||||
None => {
|
||||
tools::fuse_loop::cleanup_unused_run_files(None);
|
||||
let mut any = false;
|
||||
for (backing, loopdev) in tools::fuse_loop::find_all_mappings()? {
|
||||
let name = tools::systemd::unescape_unit(&backing)?;
|
||||
|
Reference in New Issue
Block a user