]> git.proxmox.com Git - proxmox.git/blobdiff - proxmox-sys/src/fs/mod.rs
fix: use fragmented block size for space calculation
[proxmox.git] / proxmox-sys / src / fs / mod.rs
index 8fb677c4272697cc1f6f6942959f8bb7163be052..44c3da5cfea221a1ebedb320e244853a83df2b88 100644 (file)
@@ -121,12 +121,16 @@ pub fn fs_info<P: ?Sized + nix::NixPath>(path: &P) -> nix::Result<FileSystemInfo
     let res = path.with_nix_path(|cstr| unsafe { libc::statfs64(cstr.as_ptr(), &mut stat) })?;
     nix::errno::Errno::result(res)?;
 
-    let bsize = stat.f_bsize as u64;
+    let block_size = if stat.f_frsize == 0 {
+        stat.f_bsize as u64
+    } else {
+        stat.f_frsize as u64
+    };
 
     Ok(FileSystemInformation {
-        total: stat.f_blocks * bsize,
-        used: (stat.f_blocks - stat.f_bfree) * bsize,
-        available: stat.f_bavail * bsize,
+        total: stat.f_blocks * block_size,
+        used: (stat.f_blocks - stat.f_bfree) * block_size,
+        available: stat.f_bavail * block_size,
         total_inodes: stat.f_files,
         free_inodes: stat.f_ffree,
         fs_type: stat.f_type,