Skip to content

stipple ​

Inspect, mount and extract stipplefs images.

sh
stipple <COMMAND> [OPTIONS]
CommandWhat it does
checkReport an image's structure and verify its integrity.
mountMount an image on a directory.
extractWrite an image's contents to a directory.
benchTime random reads served directly by the library, without FUSE.

Options every command takes ​

OptionDefaultMeaning
--offset <BYTES>0Byte offset of the image within the file.
--length <BYTES>rest of the fileLength of the image in bytes.
--cache-budget <BYTES>eight blocks, at least 32 MiBBytes of decoded blocks the reader may retain. Cannot be smaller than one block.
--mmapoffMap the image instead of reading it, so blocks are taken in place.

check ​

sh
stipple check <PATH>

Prints the superblock fields, each section's size and position, the count of every kind of entry, and how much of the image metadata takes up. Then it reads every file and verifies every digest, and reports the throughput. A damaged image fails with an error naming what did not match.

mount ​

sh
stipple mount <PATH> <MOUNTPOINT>

Mounts the image read-only and serves it until the mountpoint is unmounted. An interrupt, a termination signal or a hang-up unmounts it cleanly before the process exits. See Mounting.

OptionDefaultMeaning
--allow-otheroffLet other users see the mount. Needs user_allow_other in /etc/fuse.conf when not run as root.
--threads <N>4Threads answering requests from the kernel.
--warm-workers <N>one per core, at most 12Background threads decoding blocks and storing their file bytes in the kernel's page cache. The cap applies only to the default. 0 serves every read on demand.
--warm-ahead <N>2Blocks past each read to warm ahead of it.
--warm-start <N>the hot regionBlocks at the front of the stream to warm as soon as the mount exists.

extract ​

sh
stipple extract <PATH> <DESTINATION>

Writes the tree into DESTINATION, creating it if needed. Regular files, directories, symbolic links, named pipes, sockets and devices are recreated with their permissions, modification times and extended attributes, and names that share an inode in the image become hard links again. Names are written byte for byte, whatever their encoding. Ownership is left to the user running the extraction, and creating devices needs the privileges mknod needs.

OptionMeaning
--subtree <PATH>Extract only this path within the image.

bench ​

sh
stipple bench <PATH>

Picks random reads across the image's files and times them through the library, once from a cold cache and once again warm. Reports how long the image took to open and to serve its first read, then the throughput and the 50th, 90th and 99th percentile latency of each pass.

OptionDefaultMeaning
--reads <N>2000Random reads to perform.
--read-size <BYTES>4096Size of each read.
--seed <N>20260908Seed, so a run can be repeated exactly.

Released under the MIT or Apache 2.0 license, at your option.