Commits
- Commit:
5a4f90240975e0a23735d9c1f935ff0215c4aaa0
- From:
- Sergey Bronnikov <estetus@gmail.com>
- Date:
Add configuration support
Patch adds command line options and configuration file support
to unreliablefs.
unreliablefs can be managed in runtime using simple .INI configuration
file. unreliablefs config uses configuration language which provides a
structure similar to what's found in Microsoft Windows INI files or used
by configparser Python module [2]. To make it possible third-party C
library [1] has been imported.
There is only one supported error injection - "errinj_noop" that replaces
file operation with no operation. More error injections are coming.
1. https://github.com/benhoyt/inih
2. https://docs.python.org/3/library/configparser.html
Closes #3
Closes #18
Closes #1
Closes #7
Closes #12
Closes #60
- Commit:
927554b6d8fdd8c1e3783f422bf8ca53a16220d5
- From:
- Sergey Bronnikov <estetus@gmail.com>
- Date:
cmake: add ASAN and UBSAN sanitizers
Disabled by default
- Commit:
ae9c0785c0598df322cc1880c330f0c9f3f36f2d
- From:
- Sergey Bronnikov <estetus@gmail.com>
- Date:
Remove unused headers
- Commit:
ddfbdb1ae061054083507ee5508b04daf1252f60
- From:
- Sergey Bronnikov <estetus@gmail.com>
- Date:
cmake: set CFLAGS using target_compile_options()
Using target_compile_options() is one of the best practice for CMake
so replaced CMAKE_C_FLAGS and CMAKE_CXX_FLAGS by target_compile_options().
Also patch adds options -Wall and -Wextra.
- Commit:
e6cd830adef62a505d9d4ce83cbe156d25a1ce9e
- From:
- Sergey Bronnikov <estetus@gmail.com>
- Date:
gitignore: ignore .swp files
- Commit:
7d046f4f14a28cba0970bfc5f2e82d581f4673b2
- From:
- Sergey Bronnikov <estetus@gmail.com>
- Date:
ci: remove macOS 10.15
brew install --cask osxfuse
==> Tapping homebrew/cask
Cloning into '/usr/local/Homebrew/Library/Taps/homebrew/homebrew-cask'...
Error: Invalid cask: /usr/local/Homebrew/Library/Taps/homebrew/homebrew-cask/Casks/emacs.rb
Cask ''/Applications/Emacs.app/Contents/Resources/man/man1/ebrowse.1.gz' is not a valid man page name' definition is invalid.
Error: Cannot tap homebrew/cask: invalid syntax in tap!
1. https://cirrus-ci.com/task/6024547758505984
- Commit:
eab9c97a63b6f297f304a536b16b071100dad36e
- From:
- Sergey Bronnikov <estetus@gmail.com>
- Date:
FUSE_USE_VERSION
- FreeBSD https://cirrus-ci.com/task/6438581582430208?command=build
- MacOS https://cirrus-ci.com/task/5031206698876928?command=build
- Commit:
428dcf480ca60c64a5584cfe64c8f157bc1b820c
- From:
- Sergey Bronnikov <estetus@gmail.com>
- Date:
style: alignment
- Commit:
76b0d8ef5a7c700c3ccc560ba6145fcdc8aaa6f9
- From:
- Sergey Bronnikov <estetus@gmail.com>
- Date:
readme: add cirrus ci status badge
- Commit:
b4e484ee851da8b24bd53e3b2cf699ba0576b951
- From:
- Sergey Bronnikov <estetus@gmail.com>
- Date:
Add license
- Commit:
56e5a54fd8120b5289535879ee897d3f62811278
- From:
- Sergey Bronnikov <estetus@gmail.com>
- Date:
Disable FUSE wrapper for ioctl() on OpenBSD
OpenBSD has it's own FUSE implementation that
doesn't support ioctl() operation.
In file included from /home/sergeyb/source/unreliablefs/unreliablefs.c:10:
/home/sergeyb/source/unreliablefs/unreliablefs_ops.h:55:47: warning: declaration of 'struct fuse_bufvec' will not be visible outside of this
function [-Wvisibility]
int unreliable_write_buf(const char *, struct fuse_bufvec *buf, off_t off,
^
/home/sergeyb/source/unreliablefs/unreliablefs_ops.h:57:46: warning: declaration of 'struct fuse_bufvec' will not be visible outside of this
function [-Wvisibility]
int unreliable_read_buf(const char *, struct fuse_bufvec **bufp,
^
/home/sergeyb/source/unreliablefs/unreliablefs.c:51:6: error: field designator 'ioctl' does not refer to any field in type
'struct fuse_operations'
.ioctl = unreliable_ioctl,
^
2 warnings and 1 error generated.
Disable ioctl() enabled in commit c96dbe41b2f53fb5a9ac1e0fc798775c9cd01596
("Use check_function_exists() to detect functions support").
- Commit:
345979a989141d7ce01fe1cd0ffde2a62b3d1955
- From:
- Sergey Bronnikov <estetus@gmail.com>
- Date:
Add fio to regression testing
fio - is a Flexible I/O tester [1]. Fio was originally written to test a
specific workload, either for performance reasons or to find/reproduce a
bug. It allows to test many possible workloads, see examples [2] and
recommended configurations to test latency and throughput, see [3] and
[4]. This patch adds wrapper to pytest around fio and a signle simple
configuration. Other configurations are coming.
1. https://fio.readthedocs.io/en/latest/fio_doc.html
2. https://github.com/axboe/fio/tree/master/examples
3. https://docs.oracle.com/en-us/iaas/Content/Block/References/samplefiocommandslinux.htm
4. https://arstechnica.com/gadgets/2020/02/how-fast-are-your-disks-find-out-the-open-source-way-with-fio/
Closes #51
- Commit:
1927dcedd3c9f75fc546db4395a7422c9b9abcbf
- From:
- Sergey Bronnikov <estetus@gmail.com>
- Date:
Add fsx to regression testing
fsx is a 'file system exerciser'.
From [1]: "Way back in 1991, Avadis Tevanian wrote a 'file system exerciser'.
It stayed hidden away within NeXT for many years, until it resurfaced again in
1998, after being rewritten by Conrad Minshall from Apple. It still remained
somewhat unknown, until 2001, a decade after its original inception, Jordan
Hubbard announced on freebsd-hackers a new tool called 'fsx', which found major
NFS bugs in FreeBSD."
Patch adds wrapper to pytest around fsx to add it to the regression suite.
1. https://web.archive.org/web/20190115144026/http://codemonkey.org.uk/projects/fsx/
Closes #33
- Commit:
09e31d709629f469209a9210ae9d36a21ec290d5
- From:
- Sergey Bronnikov <estetus@gmail.com>
- Date:
Use HAVE_XATTR in unreliablefs.c
In commit c96dbe41b2f53fb5a9ac1e0fc798775c9cd01596 ("Use
check_function_exists() to detect functions support") macroses
for operating systems has been replaced by macroses for features.
One place was missed and patch fixes it.
- Commit:
c96dbe41b2f53fb5a9ac1e0fc798775c9cd01596
- From:
- Sergey Bronnikov <estetus@gmail.com>
- Date:
Use check_function_exists() to detect functions support
Some operating systems missed fallocate(), utimens(), flock(),
setxattr(), getxattr(), listxattr() and removexattr() support. Right
now source code related to these functions enabled explicitly on OSes
where it is supported. It's better to detect functions in runtime using
CMake's check_function_exists() and enable appropriate define if
function exists in a system.
Seems ioctl() supported everywhere, so condition compilation has been
removed.
- Commit:
51509974650a6c946194909defb2ce20944a7d79
- From:
- Sergey Bronnikov <estetus@gmail.com>
- Date:
tests: fix path to mnt_name in test for removexattr()
Follows up #50
- Commit:
142ee1a6a87651c3b727ed2bfbacf231d8783a27
- From:
- Sergey Bronnikov <estetus@gmail.com>
- Date:
Add FUSE wrapper for utimensat()
Fixes #52
Closes #16
- Commit:
21cc568c69c3d3331993c72b5b36b6f8dfa9bcd1
- From:
- Sergey Bronnikov <estetus@gmail.com>
- Date:
Fix return code in FUSE wrapper for ioctl()
"Usually, on success zero is returned. A few ioctl() requests use the
return value as an output parameter and return a nonnegative value
on success. On error, -1 is returned, and errno is set appropriately."
- Commit:
919db5195b1f0072be78ac9784f8113d0ced2499
- From:
- Sergey Bronnikov <estetus@gmail.com>
- Date:
Fix return code in FUSE wrapper for listxattr()
"On success, a nonnegative number is returned indicating the size of
the extended attribute name list. On failure, -1 is returned and errno
is set appropriately."
- Commit:
4bcab5925fb2cae8803068075787791c9f5c074e
- From:
- Sergey Bronnikov <estetus@gmail.com>
- Date:
Return 0 by default in lstat() and getattr()
- Commit:
35545f52a53ce055454fe27ec062ac3053d8c1a2
- From:
- Sergey Bronnikov <estetus@gmail.com>
- Date:
tests: add regression test for flock operation
- Commit:
29a03c390f97fc99f9defaaf597db4f8387e20fc
- From:
- Sergey Bronnikov <estetus@gmail.com>
- Date:
tests: add regression tests for xattr operations
There is a bug with setxattr, see #50. It is marked as
expected fail in tests.
- Commit:
ae52aaa51d2f9eedf103448dcdb7e9dfef5273cb
- From:
- Sergey Bronnikov <estetus@gmail.com>
- Date:
tests: add test_readdir_big()
- Commit:
8895eb30f0af8eb746db0c68dd8d77201fe1cd08
- From:
- Sergey Bronnikov <estetus@gmail.com>
- Date:
Fix bug with FUSE wrapper for readdir(2)
Fixes: #43
Fixes: #45
- Commit:
6e15b1b7c6e58c8ba4c2ed4d53bb1a41adc41ce0
- From:
- Sergey Bronnikov <estetus@gmail.com>
- Date:
Check fh for NULL in FUSE wrapper for readdir(2)