Explorar el Código

fix(fs): added device for filesystem to hashmap

xempt hace 2 años
padre
commit
ab540871ac
Se han modificado 3 ficheros con 7 adiciones y 7 borrados
  1. 1 1
      src/fs/file.rs
  2. 5 5
      src/fs/filter.rs
  3. 1 1
      src/fs/mod.rs

+ 1 - 1
src/fs/file.rs

@@ -539,7 +539,7 @@ impl<'dir> File<'dir> {
                 RECURSIVE_SIZE_HASHMAP
                     .lock()
                     .unwrap()
-                    .insert(self.metadata.ino(), recursive_size);
+                    .insert((self.metadata.dev(), self.metadata.ino()), recursive_size);
             }
             f::Size::Some(recursive_size)
         } else if self.is_char_device() || self.is_block_device() {

+ 5 - 5
src/fs/filter.rs

@@ -248,12 +248,12 @@ impl SortField {
             Self::Size => {
                 if recursive {
                     let recursive_map = RECURSIVE_SIZE_HASHMAP.lock().unwrap();
-                    match recursive_map.get(&a.metadata.ino()) {
-                        Some(s) => *s,
-                        _ => a.metadata.len()
+                    match recursive_map.get(&(a.metadata.dev(), a.metadata.ino())) {
+                            Some(v) => *v,
+                            _ => a.metadata.len()
                     }.cmp(
-                        &match recursive_map.get(&b.metadata.ino()) {
-                            Some(s) => *s,
+                        &match recursive_map.get(&(b.metadata.dev(), b.metadata.ino())) {
+                            Some(v) => *v,
                             _ => b.metadata.len()
                         }
                     )

+ 1 - 1
src/fs/mod.rs

@@ -14,5 +14,5 @@ use lazy_static::lazy_static;
 use std::collections::HashMap;
 use std::sync::Mutex;
 lazy_static! {
-    static ref RECURSIVE_SIZE_HASHMAP: Mutex<HashMap<u64, u64>> = Mutex::new(HashMap::new());
+    static ref RECURSIVE_SIZE_HASHMAP: Mutex<HashMap<(u64, u64), u64>> = Mutex::new(HashMap::new());
 }