From 0f4721f305af975113dc23996a142dfc0e4312f9 Mon Sep 17 00:00:00 2001 From: Dietmar Maurer Date: Fri, 16 Apr 2021 09:03:39 +0200 Subject: [PATCH] tape restore: fix datastore locking --- src/api2/tape/restore.rs | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/api2/tape/restore.rs b/src/api2/tape/restore.rs index 33176bd7..6e1c81f6 100644 --- a/src/api2/tape/restore.rs +++ b/src/api2/tape/restore.rs @@ -320,6 +320,15 @@ pub fn restore( .join(";") ); + let mut datastore_locks = Vec::new(); + for store_name in store_map.used_datastores() { + // explicit create shared lock to prevent GC on newly created chunks + if let Some(store) = store_map.get_datastore(store_name) { + let shared_store_lock = store.try_shared_chunk_store_lock()?; + datastore_locks.push(shared_store_lock); + } + } + for media_id in media_id_list.iter() { request_and_restore_media( &worker, @@ -333,6 +342,8 @@ pub fn restore( )?; } + drop(datastore_locks); + task_log!(worker, "Restore mediaset '{}' done", media_set); if let Err(err) = set_tape_device_state(&drive, "") {