block: bind FD lifetime of DiskFile

As we can't use BorrowedFd, we should at least create a similar
safe alternative.

Signed-off-by: Philipp Schuster <philipp.schuster@cyberus-technology.de>
On-behalf-of: SAP philipp.schuster@sap.com
This commit is contained in:
Philipp Schuster
2025-05-14 10:55:52 +02:00
committed by Rob Bradford
parent a647d7863c
commit 2da5e10689
8 changed files with 66 additions and 29 deletions

View File

@@ -4,12 +4,14 @@
use std::collections::VecDeque;
use std::fs::File;
use std::os::fd::{AsRawFd, RawFd};
use std::os::fd::AsRawFd;
use std::sync::{Arc, Mutex, MutexGuard};
use vmm_sys_util::eventfd::EventFd;
use crate::async_io::{AsyncIo, AsyncIoResult, DiskFile, DiskFileError, DiskFileResult};
use crate::async_io::{
AsyncIo, AsyncIoResult, BorrowedDiskFd, DiskFile, DiskFileError, DiskFileResult,
};
use crate::vhdx::{Result as VhdxResult, Vhdx};
use crate::AsyncAdaptor;
@@ -37,9 +39,9 @@ impl DiskFile for VhdxDiskSync {
)
}
fn fd(&mut self) -> RawFd {
fn fd(&mut self) -> BorrowedDiskFd {
let lock = self.vhdx_file.lock().unwrap();
lock.as_raw_fd()
BorrowedDiskFd::new(lock.as_raw_fd())
}
}