tape restore: fix datastore locking
This commit is contained in:
parent
5547f90ba7
commit
0f4721f305
|
@ -320,6 +320,15 @@ pub fn restore(
|
||||||
.join(";")
|
.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() {
|
for media_id in media_id_list.iter() {
|
||||||
request_and_restore_media(
|
request_and_restore_media(
|
||||||
&worker,
|
&worker,
|
||||||
|
@ -333,6 +342,8 @@ pub fn restore(
|
||||||
)?;
|
)?;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
drop(datastore_locks);
|
||||||
|
|
||||||
task_log!(worker, "Restore mediaset '{}' done", media_set);
|
task_log!(worker, "Restore mediaset '{}' done", media_set);
|
||||||
|
|
||||||
if let Err(err) = set_tape_device_state(&drive, "") {
|
if let Err(err) = set_tape_device_state(&drive, "") {
|
||||||
|
|
Loading…
Reference in New Issue