pijul nest
guest [sign in]

Support FreeBSD + ZFS where posix_fallocate reliably returns EINVAL

[?]
CfKUdBH1SowFB6y7uNUACeEhoxtSXcN8N24RiMMLmSM1
Feb 2, 2023, 7:12 PM
RUM725HY2MWXXR7M3NHTTXD7M2HM2XCSI77PXODAXAHHLVNX6Z7QC

Dependencies

  • [2] M6PHQUGL fallocate only when necessary
  • [3] 3CKCVBXT A few optional storable types
  • [4] 2ZRCQBXP Version bump
  • [5] 4Z4GEJTF Version bump
  • [6] YWFYZNLZ Cleanup + inter-process concurrency
  • [7] PRDUE4YA Cleanup + published on crates.io
  • [8] OP6SVMOD Resetting history
  • [9] W2MIZD5B Single file databases + CRC for the root pages (checking the other pages makes everything very slow)
  • [10] WTXLZDYI Fixing bus errors on a full disk
  • [11] E4MD6T3L Proofreading and commenting of this crate (massive bug fixes included)
  • [12] FQ567GAX Version bumps
  • [13] RLVQDUPY Fixing a double-free error introduced in 1.2.13
  • [14] YXKP4AIW New file locks, with multiple sets of free pages
  • [15] OHUZ73MK Versions
  • [16] DASFQGOR Debugging
  • [17] P5NWMJ2H Version bump
  • [18] XOXTGNPZ Adding a contiguous memory allocator (for large blocks)
  • [19] TJ2R4HAZ Accessing the root pages (unsafely, of course)
  • [20] C36737FJ Arbitrary byte strings, and version 1.3.1

Change contents

  • replacement in sanakirja/src/environment/mod.rs at line 3
    [4.1281][4.1281:1299]()
    use fs2::FileExt;
    [4.1281]
    [4.21782]
    use fs4::FileExt;
  • replacement in sanakirja/src/environment/mod.rs at line 403
    [2.403][2.403:442]()
    file.allocate(length)?;
    Ok(())
    [2.403]
    [4.5678]
    if let Err(err) = file.allocate(length) {
    let code = err.raw_os_error().unwrap();
    if code == libc::EINVAL {
    Ok(())
    } else {
    Err(err.into())
    }
    } else {
    Ok(())
    }
  • replacement in sanakirja/Cargo.toml at line 23
    [4.7059][4.5484:5511](),[4.5484][4.5484:5511]()
    mmap = [ "memmap", "fs2" ]
    [4.7059]
    [3.651]
    mmap = [ "memmap", "fs4", "libc" ]
  • replacement in sanakirja/Cargo.toml at line 34
    [4.5574][4.5574:5617]()
    fs2 = { version = "0.4", optional = true }
    [4.5574]
    [4.7060]
    fs4 = { version = "0.6.3", optional = true }
    libc = {version = "0.2", optional = true }