From 9b3acd0ed2bef646e6e63ba884417bf8b48e1860 Mon Sep 17 00:00:00 2001 From: Nazar Mokrynskyi Date: Wed, 20 Dec 2023 14:24:24 +0200 Subject: [PATCH 1/2] Fix printing farm info on Windows by avoiding accessing locked file --- .../src/bin/subspace-farmer/commands/farm.rs | 13 +++++++++++-- crates/subspace-farmer/src/single_disk_farm.rs | 6 ++++++ 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/crates/subspace-farmer/src/bin/subspace-farmer/commands/farm.rs b/crates/subspace-farmer/src/bin/subspace-farmer/commands/farm.rs index 08dab6b1c8..8e41e77ca4 100644 --- a/crates/subspace-farmer/src/bin/subspace-farmer/commands/farm.rs +++ b/crates/subspace-farmer/src/bin/subspace-farmer/commands/farm.rs @@ -1,7 +1,6 @@ mod dsn; use crate::commands::farm::dsn::configure_dsn; -use crate::commands::shared::print_disk_farm_info; use crate::utils::shutdown_signal; use anyhow::anyhow; use bytesize::ByteSize; @@ -490,7 +489,17 @@ where }; if !no_info { - print_disk_farm_info(disk_farm.directory, disk_farm_index); + let info = single_disk_farm.info(); + println!("Single disk farm {disk_farm_index}:"); + println!(" ID: {}", info.id()); + println!(" Genesis hash: 0x{}", hex::encode(info.genesis_hash())); + println!(" Public key: 0x{}", hex::encode(info.public_key())); + println!( + " Allocated space: {} ({})", + bytesize::to_string(info.allocated_space(), true), + bytesize::to_string(info.allocated_space(), false) + ); + println!(" Directory: {}", disk_farm.directory.display()); } single_disk_farms.push(single_disk_farm); diff --git a/crates/subspace-farmer/src/single_disk_farm.rs b/crates/subspace-farmer/src/single_disk_farm.rs index 13b50477b4..4f22220089 100644 --- a/crates/subspace-farmer/src/single_disk_farm.rs +++ b/crates/subspace-farmer/src/single_disk_farm.rs @@ -223,6 +223,7 @@ impl SingleDiskFarmInfo { } /// Summary of single disk farm for presentational purposes +#[derive(Debug)] pub enum SingleDiskFarmSummary { /// Farm was found and read successfully Found { @@ -1312,6 +1313,11 @@ impl SingleDiskFarm { self.single_disk_farm_info.id() } + /// Info of this farm + pub fn info(&self) -> &SingleDiskFarmInfo { + &self.single_disk_farm_info + } + /// Number of sectors in this farm pub fn total_sectors_count(&self) -> SectorIndex { self.total_sectors_count From 257e13cb189532f234a22d894056504e5fe00a90 Mon Sep 17 00:00:00 2001 From: Nazar Mokrynskyi Date: Wed, 20 Dec 2023 14:26:10 +0200 Subject: [PATCH 2/2] Revert "Unlock farm explicitly on drop" This reverts commit 41416f74c16c243fb1b22af16b554a3cc44feb5d. --- crates/subspace-farmer/src/single_disk_farm.rs | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-) diff --git a/crates/subspace-farmer/src/single_disk_farm.rs b/crates/subspace-farmer/src/single_disk_farm.rs index 4f22220089..6354c29bf8 100644 --- a/crates/subspace-farmer/src/single_disk_farm.rs +++ b/crates/subspace-farmer/src/single_disk_farm.rs @@ -91,17 +91,7 @@ impl SingleDiskFarmId { /// Exclusive lock for single disk farm info file, ensuring no concurrent edits by cooperating processes is done #[must_use = "Lock file must be kept around or as long as farm is used"] pub struct SingleDiskFarmInfoLock { - file: File, -} - -impl Drop for SingleDiskFarmInfoLock { - fn drop(&mut self) { - use fs4::FileExt; - - if let Err(error) = self.file.unlock() { - error!(%error, "Failed to unlock single disk farm lock"); - } - } + _file: File, } /// Important information about the contents of the `SingleDiskFarm` @@ -184,7 +174,7 @@ impl SingleDiskFarmInfo { let file = File::open(directory.join(Self::FILE_NAME))?; fs4::FileExt::try_lock_exclusive(&file)?; - Ok(SingleDiskFarmInfoLock { file }) + Ok(SingleDiskFarmInfoLock { _file: file }) } // ID of the farm