[INFO] cloning repository https://github.com/ztygod/mini-fs
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/ztygod/mini-fs" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fztygod%2Fmini-fs", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fztygod%2Fmini-fs'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 4aca77019638a70439d2c6c661a9445d548a3a8f
[INFO] testing ztygod/mini-fs against try#9f93af291970322f4f1c6315ccde4d7078201159 for pr-146098-6
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fztygod%2Fmini-fs" "/workspace/builds/worker-3-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-3-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/ztygod/mini-fs
[INFO] finished tweaking git repo https://github.com/ztygod/mini-fs
[INFO] tweaked toml for git repo https://github.com/ztygod/mini-fs written to /workspace/builds/worker-3-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/ztygod/mini-fs on toolchain 9f93af291970322f4f1c6315ccde4d7078201159
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+9f93af291970322f4f1c6315ccde4d7078201159" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/ztygod/mini-fs already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+9f93af291970322f4f1c6315ccde4d7078201159" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:4848fb76d95f26979359cc7e45710b1dbc8f3acb7aeedee7c460d7702230f228" "/opt/rustwide/cargo-home/bin/cargo" "+9f93af291970322f4f1c6315ccde4d7078201159" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 434b74fd584f11ce7a6e27c643e70c302dc882639220a5aed5a23072c10868bf
[INFO] running `Command { std: "docker" "start" "-a" "434b74fd584f11ce7a6e27c643e70c302dc882639220a5aed5a23072c10868bf", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "434b74fd584f11ce7a6e27c643e70c302dc882639220a5aed5a23072c10868bf", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "434b74fd584f11ce7a6e27c643e70c302dc882639220a5aed5a23072c10868bf", kill_on_drop: false }`
[INFO] [stdout] 434b74fd584f11ce7a6e27c643e70c302dc882639220a5aed5a23072c10868bf
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:4848fb76d95f26979359cc7e45710b1dbc8f3acb7aeedee7c460d7702230f228" "/opt/rustwide/cargo-home/bin/cargo" "+9f93af291970322f4f1c6315ccde4d7078201159" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 58820b68bd74c5b7117ac8cb6a8361440c54a2c7f695b6facd036a03c07848dd
[INFO] running `Command { std: "docker" "start" "-a" "58820b68bd74c5b7117ac8cb6a8361440c54a2c7f695b6facd036a03c07848dd", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.177
[INFO] [stderr]    Compiling proc-macro2 v1.0.102
[INFO] [stderr]    Compiling serde_core v1.0.228
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]    Compiling log v0.4.28
[INFO] [stderr]    Compiling rustix v1.1.2
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling linux-raw-sys v0.11.0
[INFO] [stderr]    Compiling getrandom v0.3.4
[INFO] [stderr]    Compiling rustix v0.38.44
[INFO] [stderr]    Compiling unicode-width v0.2.2
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling memchr v2.7.6
[INFO] [stderr]    Compiling thiserror v2.0.17
[INFO] [stderr]    Compiling portable-atomic v1.11.1
[INFO] [stderr]    Compiling iana-time-zone v0.1.64
[INFO] [stderr]    Compiling either v1.15.0
[INFO] [stderr]    Compiling itertools v0.13.0
[INFO] [stderr]    Compiling vte v0.14.1
[INFO] [stderr]    Compiling strum v0.26.3
[INFO] [stderr]    Compiling zeroize v1.8.2
[INFO] [stderr]    Compiling number_prefix v0.4.0
[INFO] [stderr]    Compiling colored v2.2.0
[INFO] [stderr]    Compiling strip-ansi-escapes v0.2.1
[INFO] [stderr]    Compiling whoami v1.6.1
[INFO] [stderr]    Compiling quote v1.0.41
[INFO] [stderr]    Compiling syn v2.0.108
[INFO] [stderr]    Compiling signal-hook-registry v1.4.6
[INFO] [stderr]    Compiling mio v1.0.4
[INFO] [stderr]    Compiling mio v0.8.11
[INFO] [stderr]    Compiling console v0.15.11
[INFO] [stderr]    Compiling dirs-sys v0.4.1
[INFO] [stderr]    Compiling parking_lot v0.12.5
[INFO] [stderr]    Compiling uuid v1.18.1
[INFO] [stderr]    Compiling dirs v5.0.1
[INFO] [stderr]    Compiling signal-hook v0.3.18
[INFO] [stderr]    Compiling indicatif v0.17.11
[INFO] [stderr]    Compiling signal-hook-mio v0.2.4
[INFO] [stderr]    Compiling bitflags v2.10.0
[INFO] [stderr]    Compiling crossterm v0.27.0
[INFO] [stderr]    Compiling fd-lock v4.0.4
[INFO] [stderr]    Compiling tempfile v3.23.0
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]    Compiling thiserror-impl v2.0.17
[INFO] [stderr]    Compiling strum_macros v0.26.4
[INFO] [stderr]    Compiling thiserror v1.0.69
[INFO] [stderr]    Compiling dialoguer v0.11.0
[INFO] [stderr]    Compiling chrono v0.4.42
[INFO] [stderr]    Compiling crossterm v0.28.1
[INFO] [stderr]    Compiling bincode v1.3.3
[INFO] [stderr]    Compiling reedline v0.43.0
[INFO] [stderr]    Compiling file-system v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused imports: `BLOCK_COUNT` and `DISK_SIZE`
[INFO] [stdout]   --> src/disk/mod.rs:10:24
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub use types::{Block, BLOCK_COUNT, BLOCK_SIZE, DISK_SIZE};
[INFO] [stdout]    |                        ^^^^^^^^^^^              ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::io::empty`
[INFO] [stdout]  --> src/fs/inode_table.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::io::empty;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `self`
[INFO] [stdout]  --> src/fs/inode_table.rs:7:24
[INFO] [stdout]   |
[INFO] [stdout] 7 |     fs::inode_bitmap::{self, InodeBitmap},
[INFO] [stdout]   |                        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/shell/mod.rs:34:9
[INFO] [stdout]    |
[INFO] [stdout] 34 |     let mut file_system = match initialize_fs() {
[INFO] [stdout]    |         ----^^^^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `file_system`
[INFO] [stdout]   --> src/shell/mod.rs:34:9
[INFO] [stdout]    |
[INFO] [stdout] 34 |     let mut file_system = match initialize_fs() {
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_file_system`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `BlockDevice` is never used
[INFO] [stdout]  --> src/disk/block_device.rs:5:11
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub trait BlockDevice: Send + Sync {
[INFO] [stdout]   |           ^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `file` is never read
[INFO] [stdout]   --> src/disk/file_disk.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub struct FileDisk {
[INFO] [stdout]    |            -------- field in this struct
[INFO] [stdout] 18 |     file: Mutex<File>,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `FileDisk` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `Block` is never used
[INFO] [stdout]   --> src/disk/types.rs:15:10
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub type Block = [u8; BLOCK_SIZE];
[INFO] [stdout]    |          ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `disk`, `super_block`, `inode_bitmap`, `data_bitmap`, `inode_table`, and `data_area` are never read
[INFO] [stdout]   --> src/fs/mod.rs:20:9
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub struct FileSystem {
[INFO] [stdout]    |            ---------- fields in this struct
[INFO] [stdout] 20 |     pub disk: FileDisk,               // 底层磁盘抽象层
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 21 |     pub super_block: SuperBlock,      // 文件系统总体信息
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] 22 |     pub inode_bitmap: InodeBitmap,    // inode 分配信息
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 23 |     pub data_bitmap: DataBlockBitmap, // 数据块分配信息
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] 24 |     pub inode_table: InodeTable,      // 所有 inode 管理
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] 25 |     pub data_area: DataArea,          // 所有数据块内容管理
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `FileSystem` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated functions are never used
[INFO] [stdout]   --> src/fs/mod.rs:29:12
[INFO] [stdout]    |
[INFO] [stdout] 28 | impl FileSystem {
[INFO] [stdout]    | --------------- associated functions in this implementation
[INFO] [stdout] 29 |     pub fn mount() {}
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 30 |     pub fn unmount() {}
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 31 |     pub fn format() {}
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 32 |     pub fn create_file() {}
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 33 |     pub fn update_file() {}
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 34 |     pub fn list_dir() {}
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 35 |     pub fn sync() {}
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 36 |     pub fn alloc_inode() {}
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 37 |     pub fn alloc_block() {}
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SUPER_BLOCK_BLOCK_ID` is never used
[INFO] [stdout]  --> src/fs/config.rs:1:11
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub const SUPER_BLOCK_BLOCK_ID: u32 = 0;
[INFO] [stdout]   |           ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `INODE_BITMAP_BLOCK_ID` is never used
[INFO] [stdout]  --> src/fs/config.rs:2:11
[INFO] [stdout]   |
[INFO] [stdout] 2 | pub const INODE_BITMAP_BLOCK_ID: u32 = 1;
[INFO] [stdout]   |           ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DATA_BLOCK_BITMAP_BLOCK_ID` is never used
[INFO] [stdout]  --> src/fs/config.rs:3:11
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub const DATA_BLOCK_BITMAP_BLOCK_ID: u32 = 2;
[INFO] [stdout]   |           ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `INODE_TABLE_START_BLOCK_ID` is never used
[INFO] [stdout]  --> src/fs/config.rs:4:11
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub const INODE_TABLE_START_BLOCK_ID: u32 = 3;
[INFO] [stdout]   |           ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `INODES_PER_BLOCK` is never used
[INFO] [stdout]  --> src/fs/config.rs:7:11
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub const INODES_PER_BLOCK: u32 = 32;
[INFO] [stdout]   |           ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TOTAL_INODES` is never used
[INFO] [stdout]   --> src/fs/config.rs:10:11
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub const TOTAL_INODES: u32 = 4096;
[INFO] [stdout]    |           ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `INODE_TABLE_BLOCKS` is never used
[INFO] [stdout]   --> src/fs/config.rs:13:11
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub const INODE_TABLE_BLOCKS: u32 = TOTAL_INODES / INODES_PER_BLOCK;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DATA_AREA_START_BLOCK_ID` is never used
[INFO] [stdout]   --> src/fs/config.rs:16:11
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub const DATA_AREA_START_BLOCK_ID: u32 = INODE_TABLE_START_BLOCK_ID + INODE_TABLE_BLOCKS;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `dirty` is never read
[INFO] [stdout]   --> src/fs/data_area.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout]  5 | pub struct DataArea {
[INFO] [stdout]    |            -------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 10 |     dirty: Vec<bool>, // 每个块是否被修改
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `DataArea` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `write_block`, `read_block`, `sync`, and `load` are never used
[INFO] [stdout]   --> src/fs/data_area.rs:14:12
[INFO] [stdout]    |
[INFO] [stdout] 13 | impl DataArea {
[INFO] [stdout]    | ------------- associated items in this implementation
[INFO] [stdout] 14 |     pub fn new(start_block: u64, total_blocks: u64) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 23 |     pub fn write_block(&mut self, index: u64, buf: &[u8]) -> Result<(), String> {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 39 |     pub fn read_block(&self, index: u64) -> Option<&[u8]> {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 47 |     pub fn sync(&mut self, disk: &mut FileDisk) -> std::io::Result<()> {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 63 |     pub fn load(&mut self, disk: &mut FileDisk) -> std::io::Result<()> {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `alloc`, `free`, `is_used`, `load`, and `sync` are never used
[INFO] [stdout]   --> src/fs/data_block_bitmap.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | impl DataBlockBitmap {
[INFO] [stdout]    | -------------------- associated items in this implementation
[INFO] [stdout] 13 |     pub fn new(total_blocks: u64, start_block: u64) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 25 |     pub fn alloc(&mut self) -> Option<u64> {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 41 |     pub fn free(&mut self, block_index: u64) {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 55 |     pub fn is_used(&self, block_index: u64) -> bool {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 62 |     pub fn load(disk: &mut FileDisk, start_block: u64, total_blocks: u64) -> Self {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 87 |     pub fn sync(&self, disk: &mut FileDisk) -> std::io::Result<()> {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `DirEntryType` is never used
[INFO] [stdout]  --> src/fs/directory.rs:6:10
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub enum DirEntryType {
[INFO] [stdout]   |          ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DirEntry` is never constructed
[INFO] [stdout]   --> src/fs/directory.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub struct DirEntry {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Directory` is never constructed
[INFO] [stdout]   --> src/fs/directory.rs:21:12
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub struct Directory {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]   --> src/fs/directory.rs:30:12
[INFO] [stdout]    |
[INFO] [stdout] 28 | impl Directory {
[INFO] [stdout]    | -------------- associated items in this implementation
[INFO] [stdout] 29 |     // 新建目录
[INFO] [stdout] 30 |     pub fn new(inode_index: usize) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 39 |     pub fn rebuild_index_map(&mut self) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 47 |     pub fn add(
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 68 |     pub fn remove(&mut self, name: &str) -> Option<usize> {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 79 |     pub fn find(&self, name: &str) -> Option<usize> {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 86 |     pub fn list(&self) -> Vec<String> {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 91 |     pub fn is_directory(&self, name: &str) -> Option<bool> {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `FileSystemError` is never used
[INFO] [stdout]  --> src/fs/error.rs:5:10
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub enum FileSystemError {
[INFO] [stdout]   |          ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `Result` is never used
[INFO] [stdout]   --> src/fs/error.rs:56:10
[INFO] [stdout]    |
[INFO] [stdout] 56 | pub type Result<T> = std::result::Result<T, FileSystemError>;
[INFO] [stdout]    |          ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `alloc`, `free`, `is_used`, `load`, and `sync` are never used
[INFO] [stdout]    --> src/fs/inode_bitmap.rs:15:12
[INFO] [stdout]     |
[INFO] [stdout]  13 | impl InodeBitmap {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout]  14 |     // 创建一个新的 inode 位图（所有位清零 = 空闲）
[INFO] [stdout]  15 |     pub fn new(total_inodes: u64, start_block: u64) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  26 |     pub fn alloc(&mut self) -> Option<u64> {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  42 |     pub fn free(&mut self, inode_index: u64) {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout]  57 |     pub fn is_used(&mut self, inode_index: u64) -> bool {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  97 |     pub fn load(disk: &mut FileDisk, start_block: u64, total_inodes: u64) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 122 |     pub fn sync(&self, disk: &mut FileDisk) -> std::io::Result<()> {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PTRS_PER_BLOCK` is never used
[INFO] [stdout]   --> src/fs/inode_table.rs:12:11
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub const PTRS_PER_BLOCK: usize = 1024; // 每个间接块可以指向多少个数据块（假设每个指针4字节）
[INFO] [stdout]    |           ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/fs/inode_table.rs:29:12
[INFO] [stdout]     |
[INFO] [stdout]  28 | impl InodeTable {
[INFO] [stdout]     | --------------- associated items in this implementation
[INFO] [stdout]  29 |     pub fn new(start_block: u64, total_inodes: u64) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  37 |     pub fn alloc_inode(
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  58 |     pub fn free_inode(&mut self, inode_bitmap: &mut InodeBitmap, inode_index: u64) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  63 |     pub fn get_inode(&self, index: u64) -> Option<&Inode> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  67 |     pub fn get_inode_mut(&mut self, index: u64) -> Option<&mut Inode> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  71 |     pub fn sync(&self, disk: &mut FileDisk) -> std::io::Result<()> {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 100 |     pub fn load(disk: &mut FileDisk, start_block: u64) -> std::io::Result<Self> {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/fs/inode_table.rs:155:12
[INFO] [stdout]     |
[INFO] [stdout] 154 | impl Inode {
[INFO] [stdout]     | ---------- associated items in this implementation
[INFO] [stdout] 155 |     pub fn new(inode_type: InodeType, uid: u32, gid: u32, permissions: u16) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 173 |     pub fn empty() -> Self {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 192 |     pub fn touch(&mut self) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 199 |     pub fn inc_link(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 203 |     pub fn dec_link(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 210 |     pub fn add_block(&mut self, block_id: u64) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 226 |     pub fn block_count(&self) -> u64 {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/fs/super_block.rs:26:8
[INFO] [stdout]    |
[INFO] [stdout] 25 | impl SuperBlock {
[INFO] [stdout]    | --------------- associated function in this implementation
[INFO] [stdout] 26 |     fn new(total_inodes: u64) -> Self {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `current_timestamp` is never used
[INFO] [stdout]  --> src/utils.rs:4:8
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub fn current_timestamp() -> u64 {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `generate_uuid` is never used
[INFO] [stdout]   --> src/utils.rs:12:8
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub fn generate_uuid() -> String {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 21.25s
[INFO] running `Command { std: "docker" "inspect" "58820b68bd74c5b7117ac8cb6a8361440c54a2c7f695b6facd036a03c07848dd", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "58820b68bd74c5b7117ac8cb6a8361440c54a2c7f695b6facd036a03c07848dd", kill_on_drop: false }`
[INFO] [stdout] 58820b68bd74c5b7117ac8cb6a8361440c54a2c7f695b6facd036a03c07848dd
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:4848fb76d95f26979359cc7e45710b1dbc8f3acb7aeedee7c460d7702230f228" "/opt/rustwide/cargo-home/bin/cargo" "+9f93af291970322f4f1c6315ccde4d7078201159" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 6d0d22b87a2d328ab053b7c86956a4b25ac9ca50d657c2b489a48a1d9c3d8bfd
[INFO] running `Command { std: "docker" "start" "-a" "6d0d22b87a2d328ab053b7c86956a4b25ac9ca50d657c2b489a48a1d9c3d8bfd", kill_on_drop: false }`
[INFO] [stderr]    Compiling file-system v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused imports: `BLOCK_COUNT` and `DISK_SIZE`
[INFO] [stdout]   --> src/disk/mod.rs:10:24
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub use types::{Block, BLOCK_COUNT, BLOCK_SIZE, DISK_SIZE};
[INFO] [stdout]    |                        ^^^^^^^^^^^              ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::io::empty`
[INFO] [stdout]  --> src/fs/inode_table.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::io::empty;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `self`
[INFO] [stdout]  --> src/fs/inode_table.rs:7:24
[INFO] [stdout]   |
[INFO] [stdout] 7 |     fs::inode_bitmap::{self, InodeBitmap},
[INFO] [stdout]   |                        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/shell/mod.rs:34:9
[INFO] [stdout]    |
[INFO] [stdout] 34 |     let mut file_system = match initialize_fs() {
[INFO] [stdout]    |         ----^^^^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `file_system`
[INFO] [stdout]   --> src/shell/mod.rs:34:9
[INFO] [stdout]    |
[INFO] [stdout] 34 |     let mut file_system = match initialize_fs() {
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_file_system`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `disk`, `super_block`, `inode_bitmap`, `data_bitmap`, `inode_table`, and `data_area` are never read
[INFO] [stdout]   --> src/fs/mod.rs:20:9
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub struct FileSystem {
[INFO] [stdout]    |            ---------- fields in this struct
[INFO] [stdout] 20 |     pub disk: FileDisk,               // 底层磁盘抽象层
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 21 |     pub super_block: SuperBlock,      // 文件系统总体信息
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] 22 |     pub inode_bitmap: InodeBitmap,    // inode 分配信息
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 23 |     pub data_bitmap: DataBlockBitmap, // 数据块分配信息
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] 24 |     pub inode_table: InodeTable,      // 所有 inode 管理
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] 25 |     pub data_area: DataArea,          // 所有数据块内容管理
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `FileSystem` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated functions are never used
[INFO] [stdout]   --> src/fs/mod.rs:29:12
[INFO] [stdout]    |
[INFO] [stdout] 28 | impl FileSystem {
[INFO] [stdout]    | --------------- associated functions in this implementation
[INFO] [stdout] 29 |     pub fn mount() {}
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 30 |     pub fn unmount() {}
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 31 |     pub fn format() {}
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 32 |     pub fn create_file() {}
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 33 |     pub fn update_file() {}
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 34 |     pub fn list_dir() {}
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 35 |     pub fn sync() {}
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 36 |     pub fn alloc_inode() {}
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 37 |     pub fn alloc_block() {}
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SUPER_BLOCK_BLOCK_ID` is never used
[INFO] [stdout]  --> src/fs/config.rs:1:11
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub const SUPER_BLOCK_BLOCK_ID: u32 = 0;
[INFO] [stdout]   |           ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `INODE_BITMAP_BLOCK_ID` is never used
[INFO] [stdout]  --> src/fs/config.rs:2:11
[INFO] [stdout]   |
[INFO] [stdout] 2 | pub const INODE_BITMAP_BLOCK_ID: u32 = 1;
[INFO] [stdout]   |           ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DATA_BLOCK_BITMAP_BLOCK_ID` is never used
[INFO] [stdout]  --> src/fs/config.rs:3:11
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub const DATA_BLOCK_BITMAP_BLOCK_ID: u32 = 2;
[INFO] [stdout]   |           ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `INODE_TABLE_START_BLOCK_ID` is never used
[INFO] [stdout]  --> src/fs/config.rs:4:11
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub const INODE_TABLE_START_BLOCK_ID: u32 = 3;
[INFO] [stdout]   |           ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `INODES_PER_BLOCK` is never used
[INFO] [stdout]  --> src/fs/config.rs:7:11
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub const INODES_PER_BLOCK: u32 = 32;
[INFO] [stdout]   |           ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TOTAL_INODES` is never used
[INFO] [stdout]   --> src/fs/config.rs:10:11
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub const TOTAL_INODES: u32 = 4096;
[INFO] [stdout]    |           ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `INODE_TABLE_BLOCKS` is never used
[INFO] [stdout]   --> src/fs/config.rs:13:11
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub const INODE_TABLE_BLOCKS: u32 = TOTAL_INODES / INODES_PER_BLOCK;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DATA_AREA_START_BLOCK_ID` is never used
[INFO] [stdout]   --> src/fs/config.rs:16:11
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub const DATA_AREA_START_BLOCK_ID: u32 = INODE_TABLE_START_BLOCK_ID + INODE_TABLE_BLOCKS;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `dirty` is never read
[INFO] [stdout]   --> src/fs/data_area.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout]  5 | pub struct DataArea {
[INFO] [stdout]    |            -------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 10 |     dirty: Vec<bool>, // 每个块是否被修改
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `DataArea` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `write_block`, `read_block`, `sync`, and `load` are never used
[INFO] [stdout]   --> src/fs/data_area.rs:14:12
[INFO] [stdout]    |
[INFO] [stdout] 13 | impl DataArea {
[INFO] [stdout]    | ------------- associated items in this implementation
[INFO] [stdout] 14 |     pub fn new(start_block: u64, total_blocks: u64) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 23 |     pub fn write_block(&mut self, index: u64, buf: &[u8]) -> Result<(), String> {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 39 |     pub fn read_block(&self, index: u64) -> Option<&[u8]> {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 47 |     pub fn sync(&mut self, disk: &mut FileDisk) -> std::io::Result<()> {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 63 |     pub fn load(&mut self, disk: &mut FileDisk) -> std::io::Result<()> {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `alloc`, `free`, `is_used`, `load`, and `sync` are never used
[INFO] [stdout]   --> src/fs/data_block_bitmap.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | impl DataBlockBitmap {
[INFO] [stdout]    | -------------------- associated items in this implementation
[INFO] [stdout] 13 |     pub fn new(total_blocks: u64, start_block: u64) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 25 |     pub fn alloc(&mut self) -> Option<u64> {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 41 |     pub fn free(&mut self, block_index: u64) {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 55 |     pub fn is_used(&self, block_index: u64) -> bool {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 62 |     pub fn load(disk: &mut FileDisk, start_block: u64, total_blocks: u64) -> Self {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 87 |     pub fn sync(&self, disk: &mut FileDisk) -> std::io::Result<()> {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `DirEntryType` is never used
[INFO] [stdout]  --> src/fs/directory.rs:6:10
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub enum DirEntryType {
[INFO] [stdout]   |          ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DirEntry` is never constructed
[INFO] [stdout]   --> src/fs/directory.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub struct DirEntry {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Directory` is never constructed
[INFO] [stdout]   --> src/fs/directory.rs:21:12
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub struct Directory {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]   --> src/fs/directory.rs:30:12
[INFO] [stdout]    |
[INFO] [stdout] 28 | impl Directory {
[INFO] [stdout]    | -------------- associated items in this implementation
[INFO] [stdout] 29 |     // 新建目录
[INFO] [stdout] 30 |     pub fn new(inode_index: usize) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 39 |     pub fn rebuild_index_map(&mut self) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 47 |     pub fn add(
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 68 |     pub fn remove(&mut self, name: &str) -> Option<usize> {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 79 |     pub fn find(&self, name: &str) -> Option<usize> {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 86 |     pub fn list(&self) -> Vec<String> {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 91 |     pub fn is_directory(&self, name: &str) -> Option<bool> {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `FileSystemError` is never used
[INFO] [stdout]  --> src/fs/error.rs:5:10
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub enum FileSystemError {
[INFO] [stdout]   |          ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `Result` is never used
[INFO] [stdout]   --> src/fs/error.rs:56:10
[INFO] [stdout]    |
[INFO] [stdout] 56 | pub type Result<T> = std::result::Result<T, FileSystemError>;
[INFO] [stdout]    |          ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `alloc`, `free`, `is_used`, `load`, and `sync` are never used
[INFO] [stdout]    --> src/fs/inode_bitmap.rs:15:12
[INFO] [stdout]     |
[INFO] [stdout]  13 | impl InodeBitmap {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout]  14 |     // 创建一个新的 inode 位图（所有位清零 = 空闲）
[INFO] [stdout]  15 |     pub fn new(total_inodes: u64, start_block: u64) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  26 |     pub fn alloc(&mut self) -> Option<u64> {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  42 |     pub fn free(&mut self, inode_index: u64) {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout]  57 |     pub fn is_used(&mut self, inode_index: u64) -> bool {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  97 |     pub fn load(disk: &mut FileDisk, start_block: u64, total_inodes: u64) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 122 |     pub fn sync(&self, disk: &mut FileDisk) -> std::io::Result<()> {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PTRS_PER_BLOCK` is never used
[INFO] [stdout]   --> src/fs/inode_table.rs:12:11
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub const PTRS_PER_BLOCK: usize = 1024; // 每个间接块可以指向多少个数据块（假设每个指针4字节）
[INFO] [stdout]    |           ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/fs/inode_table.rs:29:12
[INFO] [stdout]     |
[INFO] [stdout]  28 | impl InodeTable {
[INFO] [stdout]     | --------------- associated items in this implementation
[INFO] [stdout]  29 |     pub fn new(start_block: u64, total_inodes: u64) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  37 |     pub fn alloc_inode(
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  58 |     pub fn free_inode(&mut self, inode_bitmap: &mut InodeBitmap, inode_index: u64) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  63 |     pub fn get_inode(&self, index: u64) -> Option<&Inode> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  67 |     pub fn get_inode_mut(&mut self, index: u64) -> Option<&mut Inode> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  71 |     pub fn sync(&self, disk: &mut FileDisk) -> std::io::Result<()> {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 100 |     pub fn load(disk: &mut FileDisk, start_block: u64) -> std::io::Result<Self> {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/fs/inode_table.rs:155:12
[INFO] [stdout]     |
[INFO] [stdout] 154 | impl Inode {
[INFO] [stdout]     | ---------- associated items in this implementation
[INFO] [stdout] 155 |     pub fn new(inode_type: InodeType, uid: u32, gid: u32, permissions: u16) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 173 |     pub fn empty() -> Self {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 192 |     pub fn touch(&mut self) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 199 |     pub fn inc_link(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 203 |     pub fn dec_link(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 210 |     pub fn add_block(&mut self, block_id: u64) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 226 |     pub fn block_count(&self) -> u64 {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/fs/super_block.rs:26:8
[INFO] [stdout]    |
[INFO] [stdout] 25 | impl SuperBlock {
[INFO] [stdout]    | --------------- associated function in this implementation
[INFO] [stdout] 26 |     fn new(total_inodes: u64) -> Self {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `current_timestamp` is never used
[INFO] [stdout]  --> src/utils.rs:4:8
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub fn current_timestamp() -> u64 {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `generate_uuid` is never used
[INFO] [stdout]   --> src/utils.rs:12:8
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub fn generate_uuid() -> String {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 1.21s
[INFO] running `Command { std: "docker" "inspect" "6d0d22b87a2d328ab053b7c86956a4b25ac9ca50d657c2b489a48a1d9c3d8bfd", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "6d0d22b87a2d328ab053b7c86956a4b25ac9ca50d657c2b489a48a1d9c3d8bfd", kill_on_drop: false }`
[INFO] [stdout] 6d0d22b87a2d328ab053b7c86956a4b25ac9ca50d657c2b489a48a1d9c3d8bfd
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:4848fb76d95f26979359cc7e45710b1dbc8f3acb7aeedee7c460d7702230f228" "/opt/rustwide/cargo-home/bin/cargo" "+9f93af291970322f4f1c6315ccde4d7078201159" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] f4809a5baa86ae272a934134ac6fdd6f793c25d0d303ccb1e2f21ace0ca18b48
[INFO] running `Command { std: "docker" "start" "-a" "f4809a5baa86ae272a934134ac6fdd6f793c25d0d303ccb1e2f21ace0ca18b48", kill_on_drop: false }`
[INFO] [stderr] warning: unused imports: `BLOCK_COUNT` and `DISK_SIZE`
[INFO] [stderr]   --> src/disk/mod.rs:10:24
[INFO] [stderr]    |
[INFO] [stderr] 10 | pub use types::{Block, BLOCK_COUNT, BLOCK_SIZE, DISK_SIZE};
[INFO] [stderr]    |                        ^^^^^^^^^^^              ^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::io::empty`
[INFO] [stderr]  --> src/fs/inode_table.rs:1:5
[INFO] [stderr]   |
[INFO] [stderr] 1 | use std::io::empty;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `self`
[INFO] [stderr]  --> src/fs/inode_table.rs:7:24
[INFO] [stderr]   |
[INFO] [stderr] 7 |     fs::inode_bitmap::{self, InodeBitmap},
[INFO] [stderr]   |                        ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]   --> src/shell/mod.rs:34:9
[INFO] [stderr]    |
[INFO] [stderr] 34 |     let mut file_system = match initialize_fs() {
[INFO] [stderr]    |         ----^^^^^^^^^^^
[INFO] [stderr]    |         |
[INFO] [stderr]    |         help: remove this `mut`
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `file_system`
[INFO] [stderr]   --> src/shell/mod.rs:34:9
[INFO] [stderr]    |
[INFO] [stderr] 34 |     let mut file_system = match initialize_fs() {
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_file_system`
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: fields `disk`, `super_block`, `inode_bitmap`, `data_bitmap`, `inode_table`, and `data_area` are never read
[INFO] [stderr]   --> src/fs/mod.rs:20:9
[INFO] [stderr]    |
[INFO] [stderr] 19 | pub struct FileSystem {
[INFO] [stderr]    |            ---------- fields in this struct
[INFO] [stderr] 20 |     pub disk: FileDisk,               // 底层磁盘抽象层
[INFO] [stderr]    |         ^^^^
[INFO] [stderr] 21 |     pub super_block: SuperBlock,      // 文件系统总体信息
[INFO] [stderr]    |         ^^^^^^^^^^^
[INFO] [stderr] 22 |     pub inode_bitmap: InodeBitmap,    // inode 分配信息
[INFO] [stderr]    |         ^^^^^^^^^^^^
[INFO] [stderr] 23 |     pub data_bitmap: DataBlockBitmap, // 数据块分配信息
[INFO] [stderr]    |         ^^^^^^^^^^^
[INFO] [stderr] 24 |     pub inode_table: InodeTable,      // 所有 inode 管理
[INFO] [stderr]    |         ^^^^^^^^^^^
[INFO] [stderr] 25 |     pub data_area: DataArea,          // 所有数据块内容管理
[INFO] [stderr]    |         ^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `FileSystem` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stderr]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: multiple associated functions are never used
[INFO] [stderr]   --> src/fs/mod.rs:29:12
[INFO] [stderr]    |
[INFO] [stderr] 28 | impl FileSystem {
[INFO] [stderr]    | --------------- associated functions in this implementation
[INFO] [stderr] 29 |     pub fn mount() {}
[INFO] [stderr]    |            ^^^^^
[INFO] [stderr] 30 |     pub fn unmount() {}
[INFO] [stderr]    |            ^^^^^^^
[INFO] [stderr] 31 |     pub fn format() {}
[INFO] [stderr]    |            ^^^^^^
[INFO] [stderr] 32 |     pub fn create_file() {}
[INFO] [stderr]    |            ^^^^^^^^^^^
[INFO] [stderr] 33 |     pub fn update_file() {}
[INFO] [stderr]    |            ^^^^^^^^^^^
[INFO] [stderr] 34 |     pub fn list_dir() {}
[INFO] [stderr]    |            ^^^^^^^^
[INFO] [stderr] 35 |     pub fn sync() {}
[INFO] [stderr]    |            ^^^^
[INFO] [stderr] 36 |     pub fn alloc_inode() {}
[INFO] [stderr]    |            ^^^^^^^^^^^
[INFO] [stderr] 37 |     pub fn alloc_block() {}
[INFO] [stderr]    |            ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `SUPER_BLOCK_BLOCK_ID` is never used
[INFO] [stderr]  --> src/fs/config.rs:1:11
[INFO] [stderr]   |
[INFO] [stderr] 1 | pub const SUPER_BLOCK_BLOCK_ID: u32 = 0;
[INFO] [stderr]   |           ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `INODE_BITMAP_BLOCK_ID` is never used
[INFO] [stderr]  --> src/fs/config.rs:2:11
[INFO] [stderr]   |
[INFO] [stderr] 2 | pub const INODE_BITMAP_BLOCK_ID: u32 = 1;
[INFO] [stderr]   |           ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `DATA_BLOCK_BITMAP_BLOCK_ID` is never used
[INFO] [stderr]  --> src/fs/config.rs:3:11
[INFO] [stderr]   |
[INFO] [stderr] 3 | pub const DATA_BLOCK_BITMAP_BLOCK_ID: u32 = 2;
[INFO] [stderr]   |           ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `INODE_TABLE_START_BLOCK_ID` is never used
[INFO] [stderr]  --> src/fs/config.rs:4:11
[INFO] [stderr]   |
[INFO] [stderr] 4 | pub const INODE_TABLE_START_BLOCK_ID: u32 = 3;
[INFO] [stderr]   |           ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `INODES_PER_BLOCK` is never used
[INFO] [stderr]  --> src/fs/config.rs:7:11
[INFO] [stderr]   |
[INFO] [stderr] 7 | pub const INODES_PER_BLOCK: u32 = 32;
[INFO] [stderr]   |           ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `TOTAL_INODES` is never used
[INFO] [stderr]   --> src/fs/config.rs:10:11
[INFO] [stderr]    |
[INFO] [stderr] 10 | pub const TOTAL_INODES: u32 = 4096;
[INFO] [stderr]    |           ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `INODE_TABLE_BLOCKS` is never used
[INFO] [stderr]   --> src/fs/config.rs:13:11
[INFO] [stderr]    |
[INFO] [stderr] 13 | pub const INODE_TABLE_BLOCKS: u32 = TOTAL_INODES / INODES_PER_BLOCK;
[INFO] [stderr]    |           ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `DATA_AREA_START_BLOCK_ID` is never used
[INFO] [stderr]   --> src/fs/config.rs:16:11
[INFO] [stderr]    |
[INFO] [stderr] 16 | pub const DATA_AREA_START_BLOCK_ID: u32 = INODE_TABLE_START_BLOCK_ID + INODE_TABLE_BLOCKS;
[INFO] [stderr]    |           ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: field `dirty` is never read
[INFO] [stderr]   --> src/fs/data_area.rs:10:5
[INFO] [stderr]    |
[INFO] [stderr]  5 | pub struct DataArea {
[INFO] [stderr]    |            -------- field in this struct
[INFO] [stderr] ...
[INFO] [stderr] 10 |     dirty: Vec<bool>, // 每个块是否被修改
[INFO] [stderr]    |     ^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `DataArea` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: associated items `new`, `write_block`, `read_block`, `sync`, and `load` are never used
[INFO] [stderr]   --> src/fs/data_area.rs:14:12
[INFO] [stderr]    |
[INFO] [stderr] 13 | impl DataArea {
[INFO] [stderr]    | ------------- associated items in this implementation
[INFO] [stderr] 14 |     pub fn new(start_block: u64, total_blocks: u64) -> Self {
[INFO] [stderr]    |            ^^^
[INFO] [stderr] ...
[INFO] [stderr] 23 |     pub fn write_block(&mut self, index: u64, buf: &[u8]) -> Result<(), String> {
[INFO] [stderr]    |            ^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 39 |     pub fn read_block(&self, index: u64) -> Option<&[u8]> {
[INFO] [stderr]    |            ^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 47 |     pub fn sync(&mut self, disk: &mut FileDisk) -> std::io::Result<()> {
[INFO] [stderr]    |            ^^^^
[INFO] [stderr] ...
[INFO] [stderr] 63 |     pub fn load(&mut self, disk: &mut FileDisk) -> std::io::Result<()> {
[INFO] [stderr]    |            ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated items `new`, `alloc`, `free`, `is_used`, `load`, and `sync` are never used
[INFO] [stderr]   --> src/fs/data_block_bitmap.rs:13:12
[INFO] [stderr]    |
[INFO] [stderr] 12 | impl DataBlockBitmap {
[INFO] [stderr]    | -------------------- associated items in this implementation
[INFO] [stderr] 13 |     pub fn new(total_blocks: u64, start_block: u64) -> Self {
[INFO] [stderr]    |            ^^^
[INFO] [stderr] ...
[INFO] [stderr] 25 |     pub fn alloc(&mut self) -> Option<u64> {
[INFO] [stderr]    |            ^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 41 |     pub fn free(&mut self, block_index: u64) {
[INFO] [stderr]    |            ^^^^
[INFO] [stderr] ...
[INFO] [stderr] 55 |     pub fn is_used(&self, block_index: u64) -> bool {
[INFO] [stderr]    |            ^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 62 |     pub fn load(disk: &mut FileDisk, start_block: u64, total_blocks: u64) -> Self {
[INFO] [stderr]    |            ^^^^
[INFO] [stderr] ...
[INFO] [stderr] 87 |     pub fn sync(&self, disk: &mut FileDisk) -> std::io::Result<()> {
[INFO] [stderr]    |            ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: enum `DirEntryType` is never used
[INFO] [stderr]  --> src/fs/directory.rs:6:10
[INFO] [stderr]   |
[INFO] [stderr] 6 | pub enum DirEntryType {
[INFO] [stderr]   |          ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `DirEntry` is never constructed
[INFO] [stderr]   --> src/fs/directory.rs:13:12
[INFO] [stderr]    |
[INFO] [stderr] 13 | pub struct DirEntry {
[INFO] [stderr]    |            ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `Directory` is never constructed
[INFO] [stderr]   --> src/fs/directory.rs:21:12
[INFO] [stderr]    |
[INFO] [stderr] 21 | pub struct Directory {
[INFO] [stderr]    |            ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: multiple associated items are never used
[INFO] [stderr]   --> src/fs/directory.rs:30:12
[INFO] [stderr]    |
[INFO] [stderr] 28 | impl Directory {
[INFO] [stderr]    | -------------- associated items in this implementation
[INFO] [stderr] 29 |     // 新建目录
[INFO] [stderr] 30 |     pub fn new(inode_index: usize) -> Self {
[INFO] [stderr]    |            ^^^
[INFO] [stderr] ...
[INFO] [stderr] 39 |     pub fn rebuild_index_map(&mut self) {
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 47 |     pub fn add(
[INFO] [stderr]    |            ^^^
[INFO] [stderr] ...
[INFO] [stderr] 68 |     pub fn remove(&mut self, name: &str) -> Option<usize> {
[INFO] [stderr]    |            ^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 79 |     pub fn find(&self, name: &str) -> Option<usize> {
[INFO] [stderr]    |            ^^^^
[INFO] [stderr] ...
[INFO] [stderr] 86 |     pub fn list(&self) -> Vec<String> {
[INFO] [stderr]    |            ^^^^
[INFO] [stderr] ...
[INFO] [stderr] 91 |     pub fn is_directory(&self, name: &str) -> Option<bool> {
[INFO] [stderr]    |            ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: enum `FileSystemError` is never used
[INFO] [stderr]  --> src/fs/error.rs:5:10
[INFO] [stderr]   |
[INFO] [stderr] 5 | pub enum FileSystemError {
[INFO] [stderr]   |          ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: type alias `Result` is never used
[INFO] [stderr]   --> src/fs/error.rs:56:10
[INFO] [stderr]    |
[INFO] [stderr] 56 | pub type Result<T> = std::result::Result<T, FileSystemError>;
[INFO] [stderr]    |          ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated items `new`, `alloc`, `free`, `is_used`, `load`, and `sync` are never used
[INFO] [stderr]    --> src/fs/inode_bitmap.rs:15:12
[INFO] [stderr]     |
[INFO] [stderr]  13 | impl InodeBitmap {
[INFO] [stderr]     | ---------------- associated items in this implementation
[INFO] [stderr]  14 |     // 创建一个新的 inode 位图（所有位清零 = 空闲）
[INFO] [stderr]  15 |     pub fn new(total_inodes: u64, start_block: u64) -> Self {
[INFO] [stderr]     |            ^^^
[INFO] [stderr] ...
[INFO] [stderr]  26 |     pub fn alloc(&mut self) -> Option<u64> {
[INFO] [stderr]     |            ^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  42 |     pub fn free(&mut self, inode_index: u64) {
[INFO] [stderr]     |            ^^^^
[INFO] [stderr] ...
[INFO] [stderr]  57 |     pub fn is_used(&mut self, inode_index: u64) -> bool {
[INFO] [stderr]     |            ^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  97 |     pub fn load(disk: &mut FileDisk, start_block: u64, total_inodes: u64) -> Self {
[INFO] [stderr]     |            ^^^^
[INFO] [stderr] ...
[INFO] [stderr] 122 |     pub fn sync(&self, disk: &mut FileDisk) -> std::io::Result<()> {
[INFO] [stderr]     |            ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `PTRS_PER_BLOCK` is never used
[INFO] [stderr]   --> src/fs/inode_table.rs:12:11
[INFO] [stderr]    |
[INFO] [stderr] 12 | pub const PTRS_PER_BLOCK: usize = 1024; // 每个间接块可以指向多少个数据块（假设每个指针4字节）
[INFO] [stderr]    |           ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: multiple associated items are never used
[INFO] [stderr]    --> src/fs/inode_table.rs:29:12
[INFO] [stderr]     |
[INFO] [stderr]  28 | impl InodeTable {
[INFO] [stderr]     | --------------- associated items in this implementation
[INFO] [stderr]  29 |     pub fn new(start_block: u64, total_inodes: u64) -> Self {
[INFO] [stderr]     |            ^^^
[INFO] [stderr] ...
[INFO] [stderr]  37 |     pub fn alloc_inode(
[INFO] [stderr]     |            ^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  58 |     pub fn free_inode(&mut self, inode_bitmap: &mut InodeBitmap, inode_index: u64) {
[INFO] [stderr]     |            ^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  63 |     pub fn get_inode(&self, index: u64) -> Option<&Inode> {
[INFO] [stderr]     |            ^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  67 |     pub fn get_inode_mut(&mut self, index: u64) -> Option<&mut Inode> {
[INFO] [stderr]     |            ^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  71 |     pub fn sync(&self, disk: &mut FileDisk) -> std::io::Result<()> {
[INFO] [stderr]     |            ^^^^
[INFO] [stderr] ...
[INFO] [stderr] 100 |     pub fn load(disk: &mut FileDisk, start_block: u64) -> std::io::Result<Self> {
[INFO] [stderr]     |            ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: multiple associated items are never used
[INFO] [stderr]    --> src/fs/inode_table.rs:155:12
[INFO] [stderr]     |
[INFO] [stderr] 154 | impl Inode {
[INFO] [stderr]     | ---------- associated items in this implementation
[INFO] [stderr] 155 |     pub fn new(inode_type: InodeType, uid: u32, gid: u32, permissions: u16) -> Self {
[INFO] [stderr]     |            ^^^
[INFO] [stderr] ...
[INFO] [stderr] 173 |     pub fn empty() -> Self {
[INFO] [stderr]     |            ^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 192 |     pub fn touch(&mut self) {
[INFO] [stderr]     |            ^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 199 |     pub fn inc_link(&mut self) {
[INFO] [stderr]     |            ^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 203 |     pub fn dec_link(&mut self) {
[INFO] [stderr]     |            ^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 210 |     pub fn add_block(&mut self, block_id: u64) -> Result<(), String> {
[INFO] [stderr]     |            ^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 226 |     pub fn block_count(&self) -> u64 {
[INFO] [stderr]     |            ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function `new` is never used
[INFO] [stderr]   --> src/fs/super_block.rs:26:8
[INFO] [stderr]    |
[INFO] [stderr] 25 | impl SuperBlock {
[INFO] [stderr]    | --------------- associated function in this implementation
[INFO] [stderr] 26 |     fn new(total_inodes: u64) -> Self {
[INFO] [stderr]    |        ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `current_timestamp` is never used
[INFO] [stderr]  --> src/utils.rs:4:8
[INFO] [stderr]   |
[INFO] [stderr] 4 | pub fn current_timestamp() -> u64 {
[INFO] [stderr]   |        ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `generate_uuid` is never used
[INFO] [stderr]   --> src/utils.rs:12:8
[INFO] [stderr]    |
[INFO] [stderr] 12 | pub fn generate_uuid() -> String {
[INFO] [stderr]    |        ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: `file-system` (bin "file-system" test) generated 31 warnings (run `cargo fix --bin "file-system" -p file-system --tests` to apply 5 suggestions)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.13s
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/debug/deps/file_system-0e5bd810c8294b1d)
[INFO] [stdout] 
[INFO] [stdout] running 1 test
[INFO] [stdout] test disk::tests::test_file_disk_read_write ... FAILED
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout] 
[INFO] [stdout] ---- disk::tests::test_file_disk_read_write stdout ----
[INFO] [stdout] 
[INFO] [stdout] thread 'disk::tests::test_file_disk_read_write' (25) panicked at src/disk/mod.rs:24:65:
[INFO] [stdout] called `Result::unwrap()` on an `Err` value: Os { code: 30, kind: ReadOnlyFilesystem, message: "Read-only file system" }
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x56cc377c7212 - std::backtrace_rs::backtrace::libunwind::trace::h16affffe904e891e
[INFO] [stdout]                                at /rustc/9f93af291970322f4f1c6315ccde4d7078201159/library/std/src/../../backtrace/src/backtrace/libunwind.rs:117:9
[INFO] [stdout]    1:     0x56cc377c7212 - std::backtrace_rs::backtrace::trace_unsynchronized::h5c14b13373ed4150
[INFO] [stdout]                                at /rustc/9f93af291970322f4f1c6315ccde4d7078201159/library/std/src/../../backtrace/src/backtrace/mod.rs:66:14
[INFO] [stdout]    2:     0x56cc377c7212 - std::sys::backtrace::_print_fmt::hcbb507f162c816cc
[INFO] [stdout]                                at /rustc/9f93af291970322f4f1c6315ccde4d7078201159/library/std/src/sys/backtrace.rs:66:9
[INFO] [stdout]    3:     0x56cc377c7212 - <std::sys::backtrace::BacktraceLock::print::DisplayBacktrace as core::fmt::Display>::fmt::h8be9aa933f14675f
[INFO] [stdout]                                at /rustc/9f93af291970322f4f1c6315ccde4d7078201159/library/std/src/sys/backtrace.rs:39:26
[INFO] [stdout]    4:     0x56cc377d733f - core::fmt::rt::Argument::fmt::h30ed739d33467c3a
[INFO] [stdout]                                at /rustc/9f93af291970322f4f1c6315ccde4d7078201159/library/core/src/fmt/rt.rs:173:76
[INFO] [stdout]    5:     0x56cc377d733f - core::fmt::write::hfd0efbb002ac7eea
[INFO] [stdout]                                at /rustc/9f93af291970322f4f1c6315ccde4d7078201159/library/core/src/fmt/mod.rs:1469:25
[INFO] [stdout]    6:     0x56cc377944c3 - std::io::default_write_fmt::hd6d24501f2d7f8d3
[INFO] [stdout]                                at /rustc/9f93af291970322f4f1c6315ccde4d7078201159/library/std/src/io/mod.rs:639:11
[INFO] [stdout]    7:     0x56cc377944c3 - std::io::Write::write_fmt::h79eca2f72fc24111
[INFO] [stdout]                                at /rustc/9f93af291970322f4f1c6315ccde4d7078201159/library/std/src/io/mod.rs:1954:13
[INFO] [stdout]    8:     0x56cc377a02e2 - std::sys::backtrace::BacktraceLock::print::hf2554f6030d393f7
[INFO] [stdout]                                at /rustc/9f93af291970322f4f1c6315ccde4d7078201159/library/std/src/sys/backtrace.rs:42:9
[INFO] [stdout]    9:     0x56cc377a4e9f - std::panicking::default_hook::{{closure}}::h8873121c56335b01
[INFO] [stdout]                                at /rustc/9f93af291970322f4f1c6315ccde4d7078201159/library/std/src/panicking.rs:301:27
[INFO] [stdout]   10:     0x56cc377a4d31 - std::panicking::default_hook::hbafefc2d196267a2
[INFO] [stdout]                                at /rustc/9f93af291970322f4f1c6315ccde4d7078201159/library/std/src/panicking.rs:325:9
[INFO] [stdout]   11:     0x56cc3775fbde - <alloc::boxed::Box<F,A> as core::ops::function::Fn<Args>>::call::ha834d5846f91b30b
[INFO] [stdout]                                at /rustc/9f93af291970322f4f1c6315ccde4d7078201159/library/alloc/src/boxed.rs:2099:9
[INFO] [stdout]   12:     0x56cc3775fbde - test::test_main_with_exit_callback::{{closure}}::h63c167737eecb025
[INFO] [stdout]                                at /rustc/9f93af291970322f4f1c6315ccde4d7078201159/library/test/src/lib.rs:145:21
[INFO] [stdout]   13:     0x56cc377a54af - <alloc::boxed::Box<F,A> as core::ops::function::Fn<Args>>::call::hbf9b0f7a281291fd
[INFO] [stdout]                                at /rustc/9f93af291970322f4f1c6315ccde4d7078201159/library/alloc/src/boxed.rs:2099:9
[INFO] [stdout]   14:     0x56cc377a54af - std::panicking::panic_with_hook::h9f5b09d5adc1a745
[INFO] [stdout]                                at /rustc/9f93af291970322f4f1c6315ccde4d7078201159/library/std/src/panicking.rs:842:13
[INFO] [stdout]   15:     0x56cc377a530a - std::panicking::panic_handler::{{closure}}::h08111e483bdf6a89
[INFO] [stdout]                                at /rustc/9f93af291970322f4f1c6315ccde4d7078201159/library/std/src/panicking.rs:707:13
[INFO] [stdout]   16:     0x56cc377a0419 - std::sys::backtrace::__rust_end_short_backtrace::h1b86e3414ecbbe8d
[INFO] [stdout]                                at /rustc/9f93af291970322f4f1c6315ccde4d7078201159/library/std/src/sys/backtrace.rs:174:18
[INFO] [stdout]   17:     0x56cc37788aed - __rustc[b292c645e8102103]::rust_begin_unwind
[INFO] [stdout]                                at /rustc/9f93af291970322f4f1c6315ccde4d7078201159/library/std/src/panicking.rs:698:5
[INFO] [stdout]   18:     0x56cc377deed0 - core::panicking::panic_fmt::h31cc490ecc8cc1fa
[INFO] [stdout]                                at /rustc/9f93af291970322f4f1c6315ccde4d7078201159/library/core/src/panicking.rs:80:14
[INFO] [stdout]   19:     0x56cc377de626 - core::result::unwrap_failed::he05762ef9e6bdf9c
[INFO] [stdout]                                at /rustc/9f93af291970322f4f1c6315ccde4d7078201159/library/core/src/result.rs:1862:5
[INFO] [stdout]   20:     0x56cc3772ed2b - core::result::Result<T,E>::unwrap::hbc43e0fd43603100
[INFO] [stdout]                                at /rustc/9f93af291970322f4f1c6315ccde4d7078201159/library/core/src/result.rs:1233:23
[INFO] [stdout]   21:     0x56cc3772ed2b - file_system::disk::tests::test_file_disk_read_write::h3c230b5fa46d75ad
[INFO] [stdout]                                at /opt/rustwide/workdir/src/disk/mod.rs:24:65
[INFO] [stdout]   22:     0x56cc3772f357 - file_system::disk::tests::test_file_disk_read_write::{{closure}}::hfef7a566aa192d64
[INFO] [stdout]                                at /opt/rustwide/workdir/src/disk/mod.rs:19:35
[INFO] [stdout]   23:     0x56cc3773ca96 - core::ops::function::FnOnce::call_once::he62551c716e61b1a
[INFO] [stdout]                                at /rustc/9f93af291970322f4f1c6315ccde4d7078201159/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   24:     0x56cc3775f9db - core::ops::function::FnOnce::call_once::h2b2de5fdd23aab3e
[INFO] [stdout]                                at /rustc/9f93af291970322f4f1c6315ccde4d7078201159/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   25:     0x56cc3775f9db - test::__rust_begin_short_backtrace::he551dd004770be01
[INFO] [stdout]                                at /rustc/9f93af291970322f4f1c6315ccde4d7078201159/library/test/src/lib.rs:663:18
[INFO] [stdout]   26:     0x56cc37773a3d - test::run_test_in_process::{{closure}}::h5f0b44080a35ed87
[INFO] [stdout]                                at /rustc/9f93af291970322f4f1c6315ccde4d7078201159/library/test/src/lib.rs:686:74
[INFO] [stdout]   27:     0x56cc37773a3d - <core::panic::unwind_safe::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once::h4dbf65d14893ecf5
[INFO] [stdout]                                at /rustc/9f93af291970322f4f1c6315ccde4d7078201159/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   28:     0x56cc37773a3d - std::panicking::catch_unwind::do_call::hc37c563b8a006285
[INFO] [stdout]                                at /rustc/9f93af291970322f4f1c6315ccde4d7078201159/library/std/src/panicking.rs:590:40
[INFO] [stdout]   29:     0x56cc37773a3d - std::panicking::catch_unwind::h616b6e2e7a27f612
[INFO] [stdout]                                at /rustc/9f93af291970322f4f1c6315ccde4d7078201159/library/std/src/panicking.rs:553:19
[INFO] [stdout]   30:     0x56cc37773a3d - std::panic::catch_unwind::h1e788dd57758e6d8
[INFO] [stdout]                                at /rustc/9f93af291970322f4f1c6315ccde4d7078201159/library/std/src/panic.rs:359:14
[INFO] [stdout]   31:     0x56cc37773a3d - test::run_test_in_process::hf073c2764f29f8ad
[INFO] [stdout]                                at /rustc/9f93af291970322f4f1c6315ccde4d7078201159/library/test/src/lib.rs:686:27
[INFO] [stdout]   32:     0x56cc37773a3d - test::run_test::{{closure}}::h3dc46b7a0c340fa6
[INFO] [stdout]                                at /rustc/9f93af291970322f4f1c6315ccde4d7078201159/library/test/src/lib.rs:607:43
[INFO] [stdout]   33:     0x56cc3774cf84 - test::run_test::{{closure}}::h6a4da3c57ef4505f
[INFO] [stdout]                                at /rustc/9f93af291970322f4f1c6315ccde4d7078201159/library/test/src/lib.rs:637:41
[INFO] [stdout]   34:     0x56cc3774cf84 - std::sys::backtrace::__rust_begin_short_backtrace::hfd8e44bc311a5d57
[INFO] [stdout]                                at /rustc/9f93af291970322f4f1c6315ccde4d7078201159/library/std/src/sys/backtrace.rs:158:18
[INFO] [stdout]   35:     0x56cc377507da - std::thread::Builder::spawn_unchecked_::{{closure}}::{{closure}}::h57c4ddec344fe24c
[INFO] [stdout]                                at /rustc/9f93af291970322f4f1c6315ccde4d7078201159/library/std/src/thread/mod.rs:562:17
[INFO] [stdout]   36:     0x56cc377507da - <core::panic::unwind_safe::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once::hd7cbe09591f06dfb
[INFO] [stdout]                                at /rustc/9f93af291970322f4f1c6315ccde4d7078201159/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   37:     0x56cc377507da - std::panicking::catch_unwind::do_call::hdcd076e8e993dfbc
[INFO] [stdout]                                at /rustc/9f93af291970322f4f1c6315ccde4d7078201159/library/std/src/panicking.rs:590:40
[INFO] [stdout]   38:     0x56cc377507da - std::panicking::catch_unwind::h8f9f675f3756eab1
[INFO] [stdout]                                at /rustc/9f93af291970322f4f1c6315ccde4d7078201159/library/std/src/panicking.rs:553:19
[INFO] [stdout]   39:     0x56cc377507da - std::panic::catch_unwind::he8f74a93abeceb9b
[INFO] [stdout]                                at /rustc/9f93af291970322f4f1c6315ccde4d7078201159/library/std/src/panic.rs:359:14
[INFO] [stdout]   40:     0x56cc377507da - std::thread::Builder::spawn_unchecked_::{{closure}}::he43db13a2caa41d5
[INFO] [stdout]                                at /rustc/9f93af291970322f4f1c6315ccde4d7078201159/library/std/src/thread/mod.rs:560:30
[INFO] [stdout]   41:     0x56cc377507da - core::ops::function::FnOnce::call_once{{vtable.shim}}::h8f3531a7e0d83514
[INFO] [stdout]                                at /rustc/9f93af291970322f4f1c6315ccde4d7078201159/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   42:     0x56cc3779b81f - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::h6ff05134d80ef20e
[INFO] [stdout]                                at /rustc/9f93af291970322f4f1c6315ccde4d7078201159/library/alloc/src/boxed.rs:2085:9
[INFO] [stdout]   43:     0x56cc3779b81f - std::sys::thread::unix::Thread::new::thread_start::h9a4a41a076a486e0
[INFO] [stdout]                                at /rustc/9f93af291970322f4f1c6315ccde4d7078201159/library/std/src/sys/thread/unix.rs:124:17
[INFO] [stdout]   44:     0x74af4cff9aa4 - <unknown>
[INFO] [stdout]   45:     0x74af4d086a64 - clone
[INFO] [stdout]   46:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout]     disk::tests::test_file_disk_read_write
[INFO] [stdout] 
[INFO] [stdout] test result: FAILED. 0 passed; 1 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.05s
[INFO] [stdout] 
[INFO] [stderr] error: test failed, to rerun pass `--bin file-system`
[INFO] running `Command { std: "docker" "inspect" "f4809a5baa86ae272a934134ac6fdd6f793c25d0d303ccb1e2f21ace0ca18b48", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "f4809a5baa86ae272a934134ac6fdd6f793c25d0d303ccb1e2f21ace0ca18b48", kill_on_drop: false }`
[INFO] [stdout] f4809a5baa86ae272a934134ac6fdd6f793c25d0d303ccb1e2f21ace0ca18b48
