From 42cb9bd6a58a2dc4fc7f69749ca990e09eaefce6 Mon Sep 17 00:00:00 2001 From: Dietmar Maurer Date: Sat, 12 Dec 2020 09:45:08 +0100 Subject: [PATCH] tape: avoid executor blocking in changer api --- src/api2/tape/changer.rs | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/api2/tape/changer.rs b/src/api2/tape/changer.rs index 1fd79af3..720fcd80 100644 --- a/src/api2/tape/changer.rs +++ b/src/api2/tape/changer.rs @@ -46,13 +46,15 @@ use crate::{ }, )] /// Get tape changer status -pub fn get_status(name: String) -> Result, Error> { +pub async fn get_status(name: String) -> Result, Error> { let (config, _digest) = config::drive::config()?; let data: ScsiTapeChanger = config.lookup("changer", &name)?; - let status = mtx_status(&data.path)?; + let status = tokio::task::spawn_blocking(move || { + mtx_status(&data.path) + }).await??; let state_path = Path::new(TAPE_STATUS_DIR); let inventory = Inventory::load(state_path)?; @@ -115,7 +117,7 @@ pub fn get_status(name: String) -> Result, Error> { }, )] /// Transfers media from one slot to another -pub fn transfer( +pub async fn transfer( name: String, from: u64, to: u64, @@ -125,9 +127,9 @@ pub fn transfer( let data: ScsiTapeChanger = config.lookup("changer", &name)?; - mtx_transfer(&data.path, from, to)?; - - Ok(()) + tokio::task::spawn_blocking(move || { + mtx_transfer(&data.path, from, to) + }).await? } #[api(