lgcosta 7b5421ce49
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
Support clang builds; fix the defects clang and its sanitizers exposed
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.
2026-11-12 08:51:29 -03:00
2016-06-06 14:05:43 -04:00
2012-10-30 17:51:42 -04:00

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/.
S
Description
ReiserFS userspace utilities (mkreiserfs, reiserfsck, debugreiserfs, resize_reiserfs, reiserfstune) with a modernized build system
Readme GPL-2.0
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%