https://github.com/ligurio/unreliablefs Skip to content Sign up * Why GitHub? Features - + Mobile - + Actions - + Codespaces - + Packages - + Security - + Code review - + Issues - + Integrations - + GitHub Sponsors - + Customer stories- * Team * Enterprise * Explore + Explore GitHub - Learn and contribute + Topics - + Collections - + Trending - + Learning Lab - + Open source guides - Connect with others + The ReadME Project - + Events - + Community forum - + GitHub Education - + GitHub Stars program - * Marketplace * Pricing Plans - + Compare plans - + Contact Sales - + Education - [ ] [search-key] * # In this repository All GitHub | Jump to | * No suggested jump to results * # In this repository All GitHub | Jump to | * # In this user All GitHub | Jump to | * # In this repository All GitHub | Jump to | Sign in Sign up {{ message }} ligurio / unreliablefs * Notifications * Star 57 * Fork 0 A FUSE-based fault injection filesystem. MIT License 57 stars 0 forks Star Notifications * Code * Issues 21 * Pull requests 0 * Actions * Security * Insights More * Code * Issues * Pull requests * Actions * Security * Insights master Switch branches/tags [ ] Branches Tags Could not load branches Nothing to show {{ refName }} default View all branches Could not load tags Nothing to show {{ refName }} default View all tags 10 branches 1 tag Code Clone HTTPS GitHub CLI [https://github.com/l] Use Git or checkout with SVN using the web URL. [gh repo clone liguri] Work fast with our official CLI. Learn more. * Open with GitHub Desktop * Download ZIP Launching GitHub Desktop If nothing happens, download GitHub Desktop and try again. Go back Launching GitHub Desktop If nothing happens, download GitHub Desktop and try again. Go back Launching Xcode If nothing happens, download Xcode and try again. Go back Launching Visual Studio Code Your codespace will open once ready. There was a problem preparing your codespace, please try again. Latest commit @ligurio ligurio readme: add references and similar projects ... 6426170 Jun 30, 2021 readme: add references and similar projects Closes #47 6426170 Git stats * 69 commits Files Permalink Failed to load latest commit information. Type Name Latest commit message Commit time cmake cmake: adjust minimal version Feb 21, 2021 tests Add configuration support Apr 30, 2021 .cirrus.yml Fix problem with GPG key Jun 30, 2021 .gitignore gitignore: ignore .swp files Apr 20, 2021 CMakeLists.txt Add configuration support Apr 30, 2021 LICENSE Add license Apr 14, 2021 README.md readme: add references and similar projects Jun 30, 2021 conf.c Add configuration support Apr 30, 2021 conf.h Add configuration support Apr 30, 2021 unreliablefs.1 Add configuration support Apr 30, 2021 unreliablefs.c Add configuration support Apr 30, 2021 unreliablefs.conf.5 Add error injection with operation slowdown Jun 30, 2021 unreliablefs.h Add configuration support Apr 30, 2021 unreliablefs_errinj.c Add error injection with operation slowdown Jun 30, 2021 unreliablefs_errinj.h Add error injection with operation slowdown Jun 30, 2021 unreliablefs_errno_freebsd.h Add error injection that returns random errno Jun 30, 2021 unreliablefs_errno_linux.h Add error injection that returns random errno Jun 30, 2021 unreliablefs_errno_macosx.h Add error injection that returns random errno Jun 30, 2021 unreliablefs_errno_openbsd.h Add error injection that returns random errno Jun 30, 2021 unreliablefs_ops.c Add error injection that returns random errno Jun 30, 2021 unreliablefs_ops.h Add error injection that returns random errno Jun 30, 2021 View code UnreliableFS Building Using References Similar projects README.md UnreliableFS Build Status is a FUSE-based fault injection filesystem that allows to change fault-injections in runtime using simple configuration file. Supported fault injections are: * errinj_errno - return error value and set random errno. * errinj_kill_caller - send SIGKILL to a process that invoked file operation. * errinj_noop - replace file operation with no operation (similar to libeatmydata, but applicable to any file operation). * errinj_slowdown - slowdown invoked file operation. Building Prerequisites: * CentOS: dnf install -y gcc -y cmake fuse fuse-devel * Ubuntu: apt-get install -y gcc cmake fuse libfuse-dev * FreeBSD: pkg install gcc cmake fusefs-libs pkgconf * OpenBSD: pkg_add cmake * macOS: brew install --cask osxfuse $ mkdir build && cd build $ cmake -DCMAKE_BUILD_TYPE=Debug .. && make -j Using $ mkdir /tmp/fs $ unreliablefs /tmp/fs -base_dir=/tmp -seed=1618680646 $ cat << EOF > /tmp/fs/unreliablefs.conf [errinj_noop] op_regexp = .* path_regexp = .* probability = 30 EOF $ ls -la $ umount /tmp/fs See documentation in unreliablefs.1 and unreliablefs.conf.5. References * "Can Applications Recover from fsync Failures?" - Anthony Rebello, Yuvraj Patel, Ramnatthan Alagappan, Andrea C. Arpaci-Dusseau and Remzi H. * "All File Systems Are Not Created Equal: On the Complexity of Crafting Crash-Consistent Applications" - Thanumalayan Sankaranarayana Pillai, Vijay Chidambaram, Ramnatthan Alagappan, Samer Al-Kiswany, Andrea C. Arpaci-Dusseau, and Remzi H. Arpaci-Dusseau, University of Wisconsin-Madison * "A survey on simulation-based fault injection tools for complex systems" - Maha Kooli, Giorgio Di Natale * "To FUSE or Not to FUSE: Performance of User-Space File Systems" - Bharath Kumar Reddy Vangoor, Vasily Tarasov, Erez Zadok * "Performance and Resource Utilization of FUSE User-Space File Systems" Bharath Kumar Reddy Vangoor, Prafful Agarwal, Manu Mathew, Arun Ramachandran, and Swaminathan Sivaraman, Vasily Tarasov, Erez Zadok. * "Performance and Extension of User Space File Systems" - Aditya Rajgarhia, Ashish Gehani * "Files are hard" - Dan Luu * "Systematic Testing of Fault Handling Code in Linux Kernel" - Alexey Khoroshilov, Andrey Tsyvarev * "Software-Based Fault Injection Framework For Storage Systems" - Vinod Eswaraprasad, Smitha Jayaram * Many consumer-grade SSD drives can ignore disk flushes and falsely report to operating systems that data was written while it in fact was not. See Virtuozzo Storage Documentation and PostgreSQL Documentation. Similar projects * CuttleFS - FUSE-based file system with private page cache to simulate post fsync failure characteristics of modern file systems. * libeatmydata - LD_PRELOAD library that disables all forms of writing data safely to disk. fsync() becomes a NO-OP, O_SYNC is removed etc. * CharybdeFS - FUSE-based fault injection filesystem with a Thrift RPC interface for instrumentation. * PetardFS - FUSE-based file system for injecting intentional errors. About A FUSE-based fault injection filesystem. Topics fuse filesystem quality-assurance fuse-filesystem fault-injection software-testing chaos-testing chaos-engineering software-testing-tools fault-injection-filesystem Resources Readme License MIT License Releases 1 0.1.0 Latest Jun 30, 2021 Languages * C 72.0% * Python 18.4% * CMake 6.1% * Roff 3.5% * (c) 2021 GitHub, Inc. * Terms * Privacy * Security * Status * Docs * Contact GitHub * Pricing * API * Training * Blog * About You can't perform that action at this time. You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.