Pause I/O in get_backup()

This commit is contained in:
link2xt
2023-03-19 19:07:31 +00:00
committed by Floris Bruynooghe
parent 0c02886005
commit 5d80d4788c

View File

@@ -373,21 +373,20 @@ pub async fn get_backup(context: &Context, qr: Qr) -> Result<()> {
!context.is_configured().await?,
"Cannot import backups to accounts in use."
);
ensure!(
!context.scheduler.is_running().await,
"cannot import backup, IO is running"
);
let mut guard = context.scheduler.pause(context).await;
// Acquire global "ongoing" mutex.
let cancel_token = context.alloc_ongoing().await?;
tokio::select! {
let res = tokio::select! {
biased;
res = get_backup_inner(context, qr) => {
context.free_ongoing().await;
res
}
_ = cancel_token.recv() => Err(format_err!("cancelled")),
}
};
guard.resume().await;
res
}
async fn get_backup_inner(context: &Context, qr: Qr) -> Result<()> {