7b5421ce4901aae265709ff8ba67cf4bbd6ac49e
build / build (clang, ) (push) Failing after 7s
build / build (clang, --enable-warnings) (push) Failing after 5s
build / build (gcc, ) (push) Failing after 5s
build / build (gcc, --enable-io-failure-emulation) (push) Failing after 5s
build / build (gcc, --enable-warnings) (push) Failing after 6s
build / out-of-tree (push) Failing after 6s
build / sanitizers (push) Failing after 5s
Clang (22.1.8 on the host, 14.0.6 in the Debian VM) now builds the tree
warning-free with --enable-warnings, in-tree and out-of-tree, with -j, and
the full VM battery passes with CC=clang: 12/12. ASan/UBSan builds run the
real tool paths (mkfs, check, tune, resize, rollback save/restore/reject)
with halt_on_error and report zero errors. Documented in tests/vm/RESULTS.md;
the CI gained clang+warnings, out-of-tree and sanitizer jobs.
Fixes found by this work:
- reiserfscore/Makefile.am: reiserfs_err.c and reiserfs_err.h shared one
recipe. With -j, make runs the recipe once per stale target, so two
compile_et invocations race: one deletes reiserfs_err.c ("no input
files") while another job compiles it. Attached the recipe to
reiserfs_err.c only; reiserfs_err.h merely depends on it. Reproduced
with clang+ASan, stable across 5 clang / 3 asan / 3 gcc parallel builds.
- reiserfscore/Makefile.am: the rule read the source-local
reiserfs_err.et, so VPATH builds could not find it. Use $(srcdir)/.
make distcheck now passes.
- reiserfscore/reiserfslib.c: reiserfs_close() did fsync(fs->fs_dev) after
reiserfs_free() released fs -- a 4-byte heap-use-after-free, flagged
exactly at reiserfslib.c:406/407 by ASan (found by clang+ASan; gcc never
caught it because the freed heap usually still holds the old value).
Moved fsync before the free; reiserfs_flush() has already written
journal and dirty buffers at that point and free_buffers() never
writes, so the ordering preserves durability semantics.
- fsck/semantic_check.c, fsck/semantic_rebuild.c: three %K arguments passed
&tmp_deh->deh2_dir_id where a struct reiserfs_key * is expected. It
printed the right values only because deh2_dir_id sits at offset 4 and
the key is read from the pointer as if dir_id sat at offset 0. Build a
proper local key with set_key_dirid()/set_key_objectid() (the same
idiom debugreiserfs/scan.c already uses). Verified -Waddress-of-packed-
member (clang-only) is gone and output is unchanged.
- reiserfscore/hashes.c: four unreachable *(int *)0 = 0 stores (guarded by
len >= 16/12/8/4 tests that cannot hold after the while (len >= 16)
loop, len <= 15). Removed; clang's -Wnull-dereference goes quiet.
Behavior verified: keyed_hash/yura_hash/r5_hash outputs for 16 inputs
from 0 to 17 bytes are byte-identical before and after.
run_in_vm.sh: propagate CC into the guest, force a remount of /mnt/data
(the host rewrites the backing file under the guest), exclude generated
reiserfs_err.[ch] from the source tar. run_tests.sh: report which compiler
the battery actually used.
Reiserfs is a file system based on balanced tree algorithms, which is described at www.namesys.com. [LICENSING] ReiserFSprogs is hereby licensed under the GNU General Public License version 2 but with the following "Anti-Plagiarism" modification: You may not remove any credits or brand marks, or cause them to not display, unless you are an end user (that is, you are not redistributing to others). Yes, there really are people with the nerve to remove credits from software they did not write, or only wrote a small part of, and they are even frequently occurring sad to say. Credits are not ads, credits describe someone's contribution to the project (e.g. labor or money) whereas an ad says something else. Source code files that contain the phrase "licensing governed by reiserfsprogs/README" are "governed files" throughout that file. Governed files are licensed under this license. The portions of them owned by Hans Reiser, or authorized to be licensed by him, have been in the past, and likely will be in the future, licensed to other parties under other licenses. If you add your code to governed files, and don't want it to be owned by Hans Reiser, put your copyright label on that code so we can keep things straight. It will be a kindness if you identify whether Hans Reiser is allowed to license code labeled as owned by you on your behalf other than under this license, because he wants to know if it is okay to do so and put a check in the mail to you (for non-trivial improvements) when he makes his next sale. He makes no guarantees as to the amount if any, though he feels motivated to motivate contributors, and you can surely discuss this with him before or after contributing. You have the right to decline to allow him to license your code contribution other than under this license or the GPL. Further licensing options are available for commercial and/or other interests directly from reiser@namesys.com<P> [END LICENSING] Send bug reports to reiserfs-devel@vger.kernel.org. Hideous Commercial Pitch: Spread your development costs across other OS vendors. Select from the best in the world, not the best in your building, by buying from third party OS component suppliers. Leverage the software component development power of the internet. Be the most aggressive in taking advantage of the commercial possibilities of decentralized internet development, and add value through your branded integration that you sell as an operating system. Let your competitors be the ones to compete against the entire internet by themselves. Be hip, get with the new economic trend, before your competitors do. Send email to reiser@namesys.com. To understand the code, after reading the website, start reading the code by reading reiserfs_fs.h first. IMPORTANT NOTE: As of approximately October 2007, namesys.com has been offline and all of the original Namesys staff have gone on to other ventures or are otherwise unavailable. All removals of the namesys.com domain from the code and documentation are to avoid confusion by users, not to avoid proper attribution. Reiserfsprogs has been maintained by the ReiserFS development community for some time and can be reached at reiserfs-devel@vger.kernel.org. [BUILDING] The generated autotools files (configure, Makefile.in, ...) are not kept in the repository. After a fresh clone, bootstrap them first: ./autogen.sh ./configure make Build dependencies: a C compiler, autoconf, automake, libtool, pkg-config, libcom_err (com_err development files) and, optionally, libuuid. Supported compilers: gcc and clang. Both build warning-free with ./configure --enable-warnings && make (i.e. -Wall -Wextra). Out-of-tree (separate build directory) and parallel (-j) builds are supported. Sanitizer builds are exercised in CI: CC=clang ./configure --enable-warnings \ CFLAGS="-g -O1 -fsanitize=address,undefined -fno-omit-frame-pointer" Note: reiserfsprogs requires a libc with printf format extensions (glibc's register_printf_specifier/register_printf_modifier). It does not build against musl; see tests/vm/RESULTS.md. A libvirt/KVM test environment for Debian and Alpine lives in tests/vm/.
Description
ReiserFS userspace utilities (mkreiserfs, reiserfsck, debugreiserfs, resize_reiserfs, reiserfstune) with a modernized build system
1.7 MiB
0 Stars
1 Watchers
0 Forks
Languages
C
95.5%
Roff
2.7%
Shell
0.8%
M4
0.4%
Python
0.3%
Other
0.3%