From: Robert Obkircher <r.obkircher@proxmox.com>
To: pbs-devel@lists.proxmox.com
Subject: [PATCH v1 proxmox-backup 09/11] client: catalog shell: combine multiple block_on calls into one
Date: Thu, 26 Feb 2026 15:40:23 +0100 [thread overview]
Message-ID: <20260226144033.211039-10-r.obkircher@proxmox.com> (raw)
In-Reply-To: <20260226144033.211039-1-r.obkircher@proxmox.com>
Reduce the number of places where block_on is called.
Signed-off-by: Robert Obkircher <r.obkircher@proxmox.com>
---
pbs-client/src/catalog_shell.rs | 20 ++++++++++----------
1 file changed, 10 insertions(+), 10 deletions(-)
diff --git a/pbs-client/src/catalog_shell.rs b/pbs-client/src/catalog_shell.rs
index 43f0a73b..5e62a62a 100644
--- a/pbs-client/src/catalog_shell.rs
+++ b/pbs-client/src/catalog_shell.rs
@@ -104,7 +104,7 @@ pub fn catalog_shell_cli() -> CommandLineInterface {
fn complete_path(complete_me: &str, _map: &HashMap<String, String>) -> Vec<String> {
let shell: &mut Shell = unsafe { std::mem::transmute(SHELL.unwrap()) };
- match shell.complete_path(complete_me) {
+ match block_on(shell.complete_path(complete_me)) {
Ok(list) => list,
Err(err) => {
error!("error during completion: {}", err);
@@ -554,7 +554,7 @@ impl Shell {
Ok(())
}
- fn step_nofollow(
+ async fn step_nofollow(
stack: &mut Vec<PathStackEntry>,
catalog: &mut Option<CatalogReader>,
component: std::path::Component<'_>,
@@ -579,8 +579,8 @@ impl Shell {
}
} else {
let pxar_entry = parent_pxar_entry(stack)?;
- let parent_dir = block_on(pxar_entry.enter_directory())?;
- match block_on(parent_dir.lookup(entry))? {
+ let parent_dir = pxar_entry.enter_directory().await?;
+ match parent_dir.lookup(entry).await? {
Some(entry) => {
let entry_attr = DirEntryAttribute::try_from(&entry)?;
stack.push(PathStackEntry {
@@ -614,13 +614,13 @@ impl Shell {
}
/// Non-async version cannot follow symlinks.
- fn walk_catalog_nofollow(
+ async fn walk_catalog_nofollow(
stack: &mut Vec<PathStackEntry>,
catalog: &mut Option<CatalogReader>,
path: &Path,
) -> Result<(), Error> {
for c in path.components() {
- Self::step_nofollow(stack, catalog, c)?;
+ Self::step_nofollow(stack, catalog, c).await?;
}
Ok(())
}
@@ -657,7 +657,7 @@ impl Shell {
Ok(stack.last().unwrap().pxar.clone().unwrap())
}
- fn complete_path(&mut self, input: &str) -> Result<Vec<String>, Error> {
+ async fn complete_path(&mut self, input: &str) -> Result<Vec<String>, Error> {
let mut tmp_stack;
let (parent, base, part) = match input.rfind('/') {
Some(ind) => {
@@ -668,7 +668,7 @@ impl Shell {
} else {
tmp_stack = self.position.clone();
}
- Self::walk_catalog_nofollow(&mut tmp_stack, &mut self.catalog, &path)?;
+ Self::walk_catalog_nofollow(&mut tmp_stack, &mut self.catalog, &path).await?;
(&tmp_stack.last().unwrap(), base, part)
}
None => (&self.position.last().unwrap(), "", input),
@@ -678,12 +678,12 @@ impl Shell {
catalog.read_dir(&parent.catalog)?
} else {
let dir = if let Some(entry) = parent.pxar.as_ref() {
- block_on(entry.enter_directory())?
+ entry.enter_directory().await?
} else {
bail!("missing pxar entry for parent");
};
let mut out = Vec::new();
- let entries = block_on(crate::pxar::tools::pxar_metadata_read_dir(dir))?;
+ let entries = crate::pxar::tools::pxar_metadata_read_dir(dir).await?;
for entry in entries {
let mut name = base.to_string();
let file_name = entry.file_name().as_bytes();
--
2.47.3
next prev parent reply other threads:[~2026-02-26 14:40 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-02-26 14:40 [PATCH v1 proxmox-backup 00/11] fix various warnings Robert Obkircher
2026-02-26 14:40 ` [PATCH v1 proxmox-backup 01/11] datastore: remove allow(clippy::cast_ptr_alignment) attribute Robert Obkircher
2026-02-26 14:40 ` [PATCH v1 proxmox-backup 02/11] api: use checked_div for compression ratio calculation Robert Obkircher
2026-02-26 14:40 ` [PATCH v1 proxmox-backup 03/11] datastore+server: sort by key instead of using comparison functions Robert Obkircher
2026-02-26 14:40 ` [PATCH v1 proxmox-backup 04/11] api: remove unnecessary ampersand to fix clippy warning Robert Obkircher
2026-02-26 14:40 ` [PATCH v1 proxmox-backup 05/11] bin: debug: use pattern match instead of is_some+unwrap Robert Obkircher
2026-02-26 14:40 ` [PATCH v1 proxmox-backup 06/11] bin: proxy: fix clippy warning about unnecesary use of find_map Robert Obkircher
2026-02-26 14:40 ` [PATCH v1 proxmox-backup 07/11] datastore: silence warning about too many arguments Robert Obkircher
2026-02-26 14:40 ` [PATCH v1 proxmox-backup 08/11] client: catalog shell: avoid unnecessary block_on in async code Robert Obkircher
2026-02-26 14:40 ` Robert Obkircher [this message]
2026-02-26 14:40 ` [PATCH v1 proxmox-backup 10/11] client: catalog shell: avoid unsafe transmute Robert Obkircher
2026-02-26 14:40 ` [PATCH v1 proxmox-backup 11/11] tape: media catalog: use Flock wrapper instead of deprecated function Robert Obkircher
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260226144033.211039-10-r.obkircher@proxmox.com \
--to=r.obkircher@proxmox.com \
--cc=pbs-devel@lists.proxmox.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox