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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.