From a6f87283399eafaa60c1b48d38d08fd488deb3b9 Mon Sep 17 00:00:00 2001 From: Wolfgang Bumiller Date: Wed, 24 Jun 2020 11:57:12 +0200 Subject: [PATCH] update to pxar 0.1.9, update ReadAt implementations Signed-off-by: Wolfgang Bumiller --- Cargo.toml | 2 +- src/backup/dynamic_index.rs | 26 +++++++++++++++++--------- src/bin/proxmox-backup-client.rs | 26 +++++++++++++++++--------- 3 files changed, 35 insertions(+), 19 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 18b9c438..6f072e44 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -42,7 +42,7 @@ proxmox = { version = "0.1.40", features = [ "sortable-macro", "api-macro" ] } #proxmox = { git = "ssh://gitolite3@proxdev.maurer-it.com/rust/proxmox", version = "0.1.2", features = [ "sortable-macro", "api-macro" ] } #proxmox = { path = "../proxmox/proxmox", features = [ "sortable-macro", "api-macro" ] } proxmox-fuse = "0.1.0" -pxar = { version = "0.1.8", features = [ "tokio-io", "futures-io" ] } +pxar = { version = "0.1.9", features = [ "tokio-io", "futures-io" ] } #pxar = { path = "../pxar", features = [ "tokio-io", "futures-io" ] } regex = "1.2" rustyline = "6" diff --git a/src/backup/dynamic_index.rs b/src/backup/dynamic_index.rs index 4cf52c20..ae8427a4 100644 --- a/src/backup/dynamic_index.rs +++ b/src/backup/dynamic_index.rs @@ -4,7 +4,7 @@ use std::ops::Range; use std::os::unix::io::AsRawFd; use std::path::{Path, PathBuf}; use std::sync::{Arc, Mutex}; -use std::task::{Context, Poll}; +use std::task::Context; use std::pin::Pin; use anyhow::{bail, format_err, Error}; @@ -13,6 +13,7 @@ use proxmox::tools::io::ReadExt; use proxmox::tools::uuid::Uuid; use proxmox::tools::vec; use proxmox::tools::mmap::Mmap; +use pxar::accessor::{MaybeReady, ReadAt, ReadAtOperation}; use super::chunk_stat::ChunkStat; use super::chunk_store::ChunkStore; @@ -416,19 +417,26 @@ impl LocalDynamicReadAt { } } -impl pxar::accessor::ReadAt for LocalDynamicReadAt { - fn poll_read_at( - self: Pin<&Self>, +impl ReadAt for LocalDynamicReadAt { + fn start_read_at<'a>( + self: Pin<&'a Self>, _cx: &mut Context, - buf: &mut [u8], + buf: &'a mut [u8], offset: u64, - ) -> Poll> { + ) -> MaybeReady, ReadAtOperation<'a>> { use std::io::Read; - tokio::task::block_in_place(move || { + MaybeReady::Ready(tokio::task::block_in_place(move || { let mut reader = self.inner.lock().unwrap(); reader.seek(SeekFrom::Start(offset))?; - Poll::Ready(Ok(reader.read(buf)?)) - }) + Ok(reader.read(buf)?) + })) + } + + fn poll_complete<'a>( + self: Pin<&'a Self>, + _op: ReadAtOperation<'a>, + ) -> MaybeReady, ReadAtOperation<'a>> { + panic!("LocalDynamicReadAt::start_read_at returned Pending"); } } diff --git a/src/bin/proxmox-backup-client.rs b/src/bin/proxmox-backup-client.rs index 418eac2d..ddb35473 100644 --- a/src/bin/proxmox-backup-client.rs +++ b/src/bin/proxmox-backup-client.rs @@ -6,7 +6,7 @@ use std::os::unix::io::RawFd; use std::path::{Path, PathBuf}; use std::pin::Pin; use std::sync::{Arc, Mutex}; -use std::task::{Context, Poll}; +use std::task::Context; use anyhow::{bail, format_err, Error}; use chrono::{Local, DateTime, Utc, TimeZone}; @@ -27,6 +27,7 @@ use proxmox::api::{ApiHandler, ApiMethod, RpcEnvironment}; use proxmox::api::schema::*; use proxmox::api::cli::*; use proxmox::api::api; +use pxar::accessor::{MaybeReady, ReadAt, ReadAtOperation}; use proxmox_backup::tools; use proxmox_backup::api2::types::*; @@ -2029,19 +2030,26 @@ impl BufferedDynamicReadAt { } } -impl pxar::accessor::ReadAt for BufferedDynamicReadAt { - fn poll_read_at( - self: Pin<&Self>, +impl ReadAt for BufferedDynamicReadAt { + fn start_read_at<'a>( + self: Pin<&'a Self>, _cx: &mut Context, - buf: &mut [u8], + buf: &'a mut [u8], offset: u64, - ) -> Poll> { + ) -> MaybeReady, ReadAtOperation<'a>> { use std::io::Read; - tokio::task::block_in_place(move || { + MaybeReady::Ready(tokio::task::block_in_place(move || { let mut reader = self.inner.lock().unwrap(); reader.seek(SeekFrom::Start(offset))?; - Poll::Ready(Ok(reader.read(buf)?)) - }) + Ok(reader.read(buf)?) + })) + } + + fn poll_complete<'a>( + self: Pin<&'a Self>, + _op: ReadAtOperation<'a>, + ) -> MaybeReady, ReadAtOperation<'a>> { + panic!("LocalDynamicReadAt::start_read_at returned Pending"); } }