jaylogue / retro-fuse Goto Github PK
View Code? Open in Web Editor NEWA FUSE module for accessing ancient Unix filesystems.
License: Other
A FUSE module for accessing ancient Unix filesystems.
License: Other
Hi.
First of all, thanks for sharing this useful project with the world. ๐
(I'm creating an issue for this, since GitHub Discussions is currently not enabled for this project. You can turn this issue into a discussion once you enable that feature for this repo, should you so choose.)
So I read an article on Phoronix about a "Per-File DAX" performance improvement being introduced in FUSE in the upcoming Linux kernel version 5.17.
Two things I'm wondering, with my limited understanding of this feature:
My apologies if these questions come off as completely clueless.
Just installed MacFuse on M2 MacBook Pro. Cloned retro-fuse and typed 'make' - and then 'make v6fs' both attempts say:
retro-fuse# make v6fs
cc -std=c11 -g -Wall -O0 -fno-common -DFUSE_USE_VERSION=26 -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE -D_XOPEN_SOURCE=700 -D_ATFILE_SOURCE -D_DARWIN_C_SOURCE -MMD -MP -I./src -c -o src/fusecommon.o src/fusecommon.c
src/fusecommon.c:162:25: error: call to undeclared function 'rindex'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
retrofuse_cmdname = rindex(argv[0], '/');
^
src/fusecommon.c:162:23: warning: incompatible integer to pointer conversion assigning to 'const char *' from 'int' [-Wint-conversion]
retrofuse_cmdname = rindex(argv[0], '/');
^ ~~~~~~~~~~~~~~~~~~~~
1 warning and 1 error generated.
make: *** [src/fusecommon.o] Error
Some of the compiler error formatting is lost. Any ideas? I suspect that the current Clang C compiler may not compile old code like gcc used to. However, I am unsure.
Hi!
As I found the retro-fuse binaries useful, I wanted to add them to my CI builds setup (see http://toolchain.lug-owl.de/). Building was just a breeze, but I see unexpected errors during make test
. In my setup, everything is built within a Docker container, but even running make test
as root gives me some issues:
root@lili:/var/cache/git/retrofuse [master] # python3 --version
Python 3.11.2
root@lili:/var/cache/git/retrofuse [master] # make test
./test/retro-fuse-test.py v6fs
Create File ... PASS
Delete File ... PASS
Rename File ... PASS
Create File Link ... PASS
Delete File Link ... PASS
Change File Mode ... PASS
Change File Times ... PASS
Change File Group ... skipped 'Suitable group not found'
Read/Write File ... PASS
Overwrite File ... PASS
Extend File ... PASS
Truncate File ... PASS
Read/Write Sparse File ... PASS
Create Directory ... PASS
Remove Directory ... PASS
Rename Directory ... PASS
Create Nested Directories ... PASS
Move Directory ... PASS
Change Directory Mode ... PASS
Filesystem Check ... ERROR
ERROR: Filesystem Check
Traceback (most recent call last):
File "/var/cache/git/retrofuse/test/V6Tests.py", line 88, in test_99_FilesystemCheck
v6FileList = v6.enumFiles('/mnt')
^^^^^^^^^^^^^^^^^^^^
File "/var/cache/git/retrofuse/test/SimhDrivers.py", line 166, in enumFiles
return FileList.parse(fileListStr, re.compile(self._fileListPattern))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.11/re/__init__.py", line 227, in compile
return _compile(pattern, flags)
^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.11/re/__init__.py", line 294, in _compile
p = _compiler.compile(pattern, flags)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.11/re/_compiler.py", line 743, in compile
p = _parser.parse(p, flags)
^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.11/re/_parser.py", line 980, in parse
p = _parse_sub(source, state, flags & SRE_FLAG_VERBOSE, 0)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.11/re/_parser.py", line 455, in _parse_sub
itemsappend(_parse(source, state, verbose, nested + 1,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.11/re/_parser.py", line 841, in _parse
raise source.error('global flags not at the start '
re.error: global flags not at the start of the expression at position 25 (line 2, column 25)
Ran 20 tests in 41.817s
FAILED (errors=1, skipped=1)
make: *** [Makefile:219: test-v6fs] Error 1
With this patch, things go further:
diff --git a/test/SimhDrivers.py b/test/SimhDrivers.py
index 7fbcad1..3ee7ba1 100644
--- a/test/SimhDrivers.py
+++ b/test/SimhDrivers.py
@@ -205,8 +205,7 @@ attach rk0 system.dsk
_fileListCmd = '/usr/bin/find %s -exec /bin/ls -ild {} \\; -o \\( -type -f -a -exec /usr/bin/cksum {} \\; \\) -o \\( \\! -type -f -a -exec echo - \\; \\)'
# Regex pattern to parse output from the above command.
- _fileListPattern = r'''
- (?mx)
+ _fileListPattern = r'''(?mx)
^
\s* (?P<inode> \d+)
\s+ (?P<type> [bcd-]) (?P<mode> [rwsStTx-]{9}t?)
@@ -344,8 +343,7 @@ attach rp0 system.dsk
_fileListCmd = '/bin/find %s -exec /bin/ls -ild {} \\; -a \\( -type f -a -exec /bin/cksum {} \\; \\) -o \\( \\! -type f -a -exec echo - \\; \\)'
# Regex pattern to parse output from the above command.
- _fileListPattern = r'''
- (?mx)
+ _fileListPattern = r'''(?mx)
^
\s* (?P<inode> \d+)
\s+ (?P<type> [bcd-]) (?P<mode> [rwsStTx-]{9}t?)
@@ -492,9 +490,8 @@ attach rl1 swap.dsk
_fileListCmd = '/bin/find %s -exec /usr/ucb/ls -ildn {} \\; \\( -type f -exec /bin/cksum {} \\; \\) -o -exec echo - \\;'
# Regex pattern to parse output from the above command.
- _fileListPattern = r'''
+ _fileListPattern = r'''(?mx)
^
- (?mx)
\s* (?P<inode> \d+)
\s+ (?P<type> [bcd-]) (?P<mode> [rwsStTx-]{9})
\s* (?P<linkCount> \d+)
@@ -646,9 +643,8 @@ attach rq0 system.dsk
_fileListCmd = '/usr/bin/find %s -exec /bin/ls -ildg {} \\; \\( -type f -exec /bin/cksum {} \\; \\) -o -exec echo - \\;'
# Regex pattern to parse output from the above command.
- _fileListPattern = r'''
+ _fileListPattern = r'''(?mx)
^
- (?mx)
\s* (?P<inode> \d+)
\s+ (?P<type> [bcd-]) (?P<mode> [rwsStTx-]{9})
\s* (?P<linkCount> \d+)
...and tests pass with current OpenSIMH:
root@lili:/var/cache/git/retrofuse [master] # pdp11
PDP-11 simulator Open SIMH V4.1-0 Current git commit id: 348f5f29
sim> sh ver
PDP-11 simulator Open SIMH V4.1-0 Current
Simulator Framework Capabilities:
32b data
32b addresses
Threaded Ethernet Packet transports:PCAP:TAP:VDE:NAT:UDP
Idle/Throttling support is available
Virtual Hard Disk (VHD) support
RAW disk and CD/DVD ROM support
Asynchronous I/O support (Lock free asynchronous event queue)
Asynchronous Clock support
FrontPanel API Version 12
Host Platform:
Compiler: GCC 14.0.0 20230711 (experimental)
Simulator Compiled as C arch: x64 (Release Build) on Aug 13 2023 at 16:19:51
Build Tool: simh-makefile
Memory Access: Little Endian
Memory Pointer Size: 64 bits
Large File (>2GB) support
SDL Video support: SDL Version (Compiled: 2.28.0, Runtime: 2.26.2), PNG Version (Compiled: 1.6.40, Runtime: 1.6.39), zlib: (Compiled: 1.2.13, Runtime: 1.2.11)
PCRE RegEx (Version 8.39 2016-06-14) support for EXPECT commands
OS clock resolution: 1ms
Time taken by msleep(1): 1ms
Ethernet packet info: libpcap version 1.10.3 (with TPACKET_V3)
OS: Linux lili 5.16.0-4-amd64 #1 SMP PREEMPT Debian 5.16.12-1 (2022-03-08) x86_64 GNU/Linux
Processor Name: Intel(R) Xeon(R) CPU E5-2450L 0 @ 1.80GHz
tar tool: tar (GNU tar) 1.34
curl tool: curl 7.82.0 (x86_64-pc-linux-gnu) libcurl/7.82.0 OpenSSL/1.1.1m zlib/1.2.11 brotli/1.0.9 zstd/1.5.2 libidn2/2.3.3 libpsl/0.21.0 (+libidn2/2.3.0) libssh2/1.10.0 nghttp2/1.52.0 librtmp/2.3 OpenLDAP/2.4.59
git commit id: 348f5f29
git commit time: 2023-07-31T10:34:33-0700
here's a transcript of the build, looks like circular references with the automatic dependencies.
Script started on 2021-12-03 19:20:46+11:00 [TERM="tmux-256color" TTY="/dev/pts/10" COLUMNS="173" LINES="47"]
$ make
gcc -std=c11 -g -Wall -O0 -MMD -MP -I./src -c -o src/fusecommon.o src/fusecommon.c
gcc -std=c11 -g -Wall -O0 -MMD -MP -I./src -c -o src/v6fuse.o src/v6fuse.c
gcc -std=c11 -g -Wall -O0 -I./ancient-src/v6 -MMD -MP -I./src -c -o src/v6fs.o src/v6fs.c
gcc -std=c11 -g -Wall -O0 -I./ancient-src/v6 -MMD -MP -I./src -c -o src/v6adapt.o src/v6adapt.c
gcc -std=c11 -g -Wall -O0 -MMD -MP -I./src -c -o src/idmap.o src/idmap.c
gcc -std=c11 -g -Wall -O0 -MMD -MP -I./src -c -o src/dskio.o src/dskio.c
gcc -std=c11 -g -Wall -O0 -I./ancient-src/v6 -MMD -MP -I./src -c -o ancient-src/v6/ken/alloc.o ancient-src/v6/ken/alloc.c
gcc -std=c11 -g -Wall -O0 -I./ancient-src/v6 -MMD -MP -I./src -c -o ancient-src/v6/dmr/bio.o ancient-src/v6/dmr/bio.c
gcc -std=c11 -g -Wall -O0 -I./ancient-src/v6 -MMD -MP -I./src -c -o ancient-src/v6/ken/subr.o ancient-src/v6/ken/subr.c
gcc -std=c11 -g -Wall -O0 -I./ancient-src/v6 -MMD -MP -I./src -c -o ancient-src/v6/ken/iget.o ancient-src/v6/ken/iget.c
gcc -std=c11 -g -Wall -O0 -I./ancient-src/v6 -MMD -MP -I./src -c -o ancient-src/v6/ken/rdwri.o ancient-src/v6/ken/rdwri.c
gcc -std=c11 -g -Wall -O0 -I./ancient-src/v6 -MMD -MP -I./src -c -o ancient-src/v6/ken/nami.o ancient-src/v6/ken/nami.c
gcc -std=c11 -g -Wall -O0 -I./ancient-src/v6 -MMD -MP -I./src -c -o ancient-src/v6/ken/fio.o ancient-src/v6/ken/fio.c
gcc -std=c11 -g -Wall -O0 -I./ancient-src/v6 -MMD -MP -I./src -c -o ancient-src/v6/ken/pipe.o ancient-src/v6/ken/pipe.c
gcc -std=c11 -g -Wall -O0 -I./ancient-src/v6 -MMD -MP -I./src -c -o ancient-src/v6/ken/sys2.o ancient-src/v6/ken/sys2.c
gcc -std=c11 -g -Wall -O0 -I./ancient-src/v6 -MMD -MP -I./src -c -o ancient-src/v6/ken/sys3.o ancient-src/v6/ken/sys3.c
gcc -std=c11 -g -Wall -O0 -I./ancient-src/v6 -MMD -MP -I./src -c -o ancient-src/v6/ken/sys4.o ancient-src/v6/ken/sys4.c
gcc -o v6fs -Xlinker src/fusecommon.o src/v6fuse.o src/v6fs.o src/v6adapt.o src/idmap.o src/dskio.o ancient-src/v6/ken/alloc.o ancient-src/v6/dmr/bio.o ancient-src/v6/ken/subr.o ancient-src/v6/ken/iget.o ancient-src/v6/ken/rdwri.o ancient-src/v6/ken/nami.o ancient-src/v6/ken/fio.o ancient-src/v6/ken/pipe.o ancient-src/v6/ken/sys2.o ancient-src/v6/ken/sys3.o ancient-src/v6/ken/sys4.o -lfuse
gcc -std=c11 -g -Wall -O0 -MMD -MP -I./src -c -o src/v7fuse.o src/v7fuse.c
gcc -std=c11 -g -Wall -O0 -I./ancient-src/v7 -MMD -MP -I./src -c -o src/v7fs.o src/v7fs.c
gcc -std=c11 -g -Wall -O0 -I./ancient-src/v7 -MMD -MP -I./src -c -o src/v7adapt.o src/v7adapt.c
gcc -std=c11 -g -Wall -O0 -I./ancient-src/v7 -MMD -MP -I./src -c -o ancient-src/v7/sys/alloc.o ancient-src/v7/sys/alloc.c
gcc -std=c11 -g -Wall -O0 -I./ancient-src/v7 -MMD -MP -I./src -c -o ancient-src/v7/dev/bio.o ancient-src/v7/dev/bio.c
gcc -std=c11 -g -Wall -O0 -I./ancient-src/v7 -MMD -MP -I./src -c -o ancient-src/v7/sys/subr.o ancient-src/v7/sys/subr.c
gcc -std=c11 -g -Wall -O0 -I./ancient-src/v7 -MMD -MP -I./src -c -o ancient-src/v7/sys/iget.o ancient-src/v7/sys/iget.c
gcc -std=c11 -g -Wall -O0 -I./ancient-src/v7 -MMD -MP -I./src -c -o ancient-src/v7/sys/rdwri.o ancient-src/v7/sys/rdwri.c
gcc -std=c11 -g -Wall -O0 -I./ancient-src/v7 -MMD -MP -I./src -c -o ancient-src/v7/sys/nami.o ancient-src/v7/sys/nami.c
gcc -std=c11 -g -Wall -O0 -I./ancient-src/v7 -MMD -MP -I./src -c -o ancient-src/v7/sys/fio.o ancient-src/v7/sys/fio.c
gcc -std=c11 -g -Wall -O0 -I./ancient-src/v7 -MMD -MP -I./src -c -o ancient-src/v7/sys/pipe.o ancient-src/v7/sys/pipe.c
gcc -std=c11 -g -Wall -O0 -I./ancient-src/v7 -MMD -MP -I./src -c -o ancient-src/v7/sys/sys2.o ancient-src/v7/sys/sys2.c
gcc -std=c11 -g -Wall -O0 -I./ancient-src/v7 -MMD -MP -I./src -c -o ancient-src/v7/sys/sys3.o ancient-src/v7/sys/sys3.c
gcc -std=c11 -g -Wall -O0 -I./ancient-src/v7 -MMD -MP -I./src -c -o ancient-src/v7/sys/sys4.o ancient-src/v7/sys/sys4.c
gcc -std=c11 -g -Wall -O0 -I./ancient-src/v7 -MMD -MP -I./src -c -o ancient-src/v7/sys/main.o ancient-src/v7/sys/main.c
gcc -o v7fs -Xlinker src/fusecommon.o src/v7fuse.o src/v7fs.o src/v7adapt.o src/idmap.o src/dskio.o ancient-src/v7/sys/alloc.o ancient-src/v7/dev/bio.o ancient-src/v7/sys/subr.o ancient-src/v7/sys/iget.o ancient-src/v7/sys/rdwri.o ancient-src/v7/sys/nami.o ancient-src/v7/sys/fio.o ancient-src/v7/sys/pipe.o ancient-src/v7/sys/sys2.o ancient-src/v7/sys/sys3.o ancient-src/v7/sys/sys4.o ancient-src/v7/sys/main.o -lfuse
/usr/bin/ld: src/v7adapt.o:/home/ewe2/devel/unix-history/retro-fuse/./ancient-src/v7/h/inode.h:51: multiple definition of `mpxip'; src/v7fs.o:/home/ewe2/devel/unix-history/retro-fuse/./ancient-src/v7/h/inode.h:51: first defined here
/usr/bin/ld: src/v7adapt.o:/home/ewe2/devel/unix-history/retro-fuse/./ancient-src/v7/h/mount.h:11: multiple definition of `v7_mount'; src/v7fs.o:/home/ewe2/devel/unix-history/retro-fuse/./ancient-src/v7/h/mount.h:11: first defined here
/usr/bin/ld: ancient-src/v7/sys/alloc.o:/home/ewe2/devel/unix-history/retro-fuse/ancient-src/v7/sys/../h/mount.h:11: multiple definition of `v7_mount'; src/v7fs.o:/home/ewe2/devel/unix-history/retro-fuse/./ancient-src/v7/h/mount.h:11: first defined here
/usr/bin/ld: ancient-src/v7/sys/alloc.o:/home/ewe2/devel/unix-history/retro-fuse/ancient-src/v7/sys/../h/inode.h:51: multiple definition of `mpxip'; src/v7fs.o:/home/ewe2/devel/unix-history/retro-fuse/./ancient-src/v7/h/inode.h:51: first defined here
/usr/bin/ld: ancient-src/v7/sys/subr.o:/home/ewe2/devel/unix-history/retro-fuse/ancient-src/v7/sys/../h/inode.h:51: multiple definition of `mpxip'; src/v7fs.o:/home/ewe2/devel/unix-history/retro-fuse/./ancient-src/v7/h/inode.h:51: first defined here
/usr/bin/ld: ancient-src/v7/sys/iget.o:/home/ewe2/devel/unix-history/retro-fuse/ancient-src/v7/sys/../h/mount.h:11: multiple definition of `v7_mount'; src/v7fs.o:/home/ewe2/devel/unix-history/retro-fuse/./ancient-src/v7/h/mount.h:11: first defined here
/usr/bin/ld: ancient-src/v7/sys/iget.o:/home/ewe2/devel/unix-history/retro-fuse/ancient-src/v7/sys/../h/inode.h:51: multiple definition of `mpxip'; src/v7fs.o:/home/ewe2/devel/unix-history/retro-fuse/./ancient-src/v7/h/inode.h:51: first defined here
/usr/bin/ld: ancient-src/v7/sys/rdwri.o:/home/ewe2/devel/unix-history/retro-fuse/ancient-src/v7/sys/../h/inode.h:51: multiple definition of `mpxip'; src/v7fs.o:/home/ewe2/devel/unix-history/retro-fuse/./ancient-src/v7/h/inode.h:51: first defined here
/usr/bin/ld: ancient-src/v7/sys/nami.o:/home/ewe2/devel/unix-history/retro-fuse/ancient-src/v7/sys/../h/inode.h:51: multiple definition of `mpxip'; src/v7fs.o:/home/ewe2/devel/unix-history/retro-fuse/./ancient-src/v7/h/inode.h:51: first defined here
/usr/bin/ld: ancient-src/v7/sys/nami.o:/home/ewe2/devel/unix-history/retro-fuse/ancient-src/v7/sys/../h/mount.h:11: multiple definition of `v7_mount'; src/v7fs.o:/home/ewe2/devel/unix-history/retro-fuse/./ancient-src/v7/h/mount.h:11: first defined here
/usr/bin/ld: ancient-src/v7/sys/fio.o:/home/ewe2/devel/unix-history/retro-fuse/ancient-src/v7/sys/../h/inode.h:51: multiple definition of `mpxip'; src/v7fs.o:/home/ewe2/devel/unix-history/retro-fuse/./ancient-src/v7/h/inode.h:51: first defined here
/usr/bin/ld: ancient-src/v7/sys/pipe.o:/home/ewe2/devel/unix-history/retro-fuse/ancient-src/v7/sys/../h/inode.h:51: multiple definition of `mpxip'; src/v7fs.o:/home/ewe2/devel/unix-history/retro-fuse/./ancient-src/v7/h/inode.h:51: first defined here
/usr/bin/ld: ancient-src/v7/sys/sys2.o:/home/ewe2/devel/unix-history/retro-fuse/ancient-src/v7/sys/../h/inode.h:51: multiple definition of `mpxip'; src/v7fs.o:/home/ewe2/devel/unix-history/retro-fuse/./ancient-src/v7/h/inode.h:51: first defined here
/usr/bin/ld: ancient-src/v7/sys/sys3.o:/home/ewe2/devel/unix-history/retro-fuse/ancient-src/v7/sys/../h/mount.h:11: multiple definition of `v7_mount'; src/v7fs.o:/home/ewe2/devel/unix-history/retro-fuse/./ancient-src/v7/h/mount.h:11: first defined here
/usr/bin/ld: ancient-src/v7/sys/sys3.o:/home/ewe2/devel/unix-history/retro-fuse/ancient-src/v7/sys/../h/inode.h:51: multiple definition of `mpxip'; src/v7fs.o:/home/ewe2/devel/unix-history/retro-fuse/./ancient-src/v7/h/inode.h:51: first defined here
/usr/bin/ld: ancient-src/v7/sys/sys4.o:/home/ewe2/devel/unix-history/retro-fuse/ancient-src/v7/sys/../h/inode.h:51: multiple definition of `mpxip'; src/v7fs.o:/home/ewe2/devel/unix-history/retro-fuse/./ancient-src/v7/h/inode.h:51: first defined here
/usr/bin/ld: ancient-src/v7/sys/main.o:/home/ewe2/devel/unix-history/retro-fuse/ancient-src/v7/sys/../h/mount.h:11: multiple definition of `v7_mount'; src/v7fs.o:/home/ewe2/devel/unix-history/retro-fuse/./ancient-src/v7/h/mount.h:11: first defined here
/usr/bin/ld: ancient-src/v7/sys/main.o:/home/ewe2/devel/unix-history/retro-fuse/ancient-src/v7/sys/../h/inode.h:51: multiple definition of `mpxip'; src/v7fs.o:/home/ewe2/devel/unix-history/retro-fuse/./ancient-src/v7/h/inode.h:51: first defined here
/usr/bin/ld: ancient-src/v7/sys/main.o:/home/ewe2/devel/unix-history/retro-fuse/ancient-src/v7/sys/../h/seg.h:18: multiple definition of `ka6'; ancient-src/v7/dev/bio.o:/home/ewe2/devel/unix-history/retro-fuse/ancient-src/v7/dev/../h/seg.h:18: first defined here
collect2: error: ld returned 1 exit status
make: *** [Makefile:101: v7fs] Error 1
When adding a file to an RK05 image that's mounted on a modern system (WSL 2, Ubuntu 20.04), modern timestamps are added (or attempt to be added). This adds a minor bug with regards to the "date" command once running back in UNIX V6 where it now shows an incorrect date in an invalid format.
Easily fixed by setting the date again ("date MMddHHmmyy") when back running in UNIX.
This might just be me, but thought it was worth mentioning.
When running a df command with a mounted 2.11 BSD file system, the information displayed in the Used and Available space report is very wrong. V6 and V7 file systems seem to work correctly.
The environment is a PiDP-11 (Raspberry Pi) running on
uname -a
Linux pidp-11 4.19.66-v7+ #1253 SMP Thu Aug 15 11:49:46 BST 2019 armv7l GNU/Linux
rank@pidp-11:~$ df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/root 30568540 27793076 1470080 95% /
devtmpfs 469544 0 469544 0% /dev
tmpfs 474152 0 474152 0% /dev/shm
tmpfs 474152 24520 449632 6% /run
tmpfs 5120 4 5116 1% /run/lock
tmpfs 474152 0 474152 0% /sys/fs/cgroup
/dev/mmcblk0p1 43539 22856 20683 53% /boot
tmpfs 94828 0 94828 0% /run/user/1000
tmpfs 94828 0 94828 0% /run/user/1002
/dev/fuse 7942 -276881658 276889600 - /home/frank/retro-fuse/211root
/dev/fuse 1044573 -18446744072831438767 -877068276 100% /home/frank/retro-fuse/211bsdhome
/dev/fuse 4800 3239 1561 68% /home/frank/retro-fuse/v7/root
/dev/fuse 2000 1515 486 76% /home/frank/retro-fuse/v6/root
frank@pidp-11:~$
A couple of bugs have been observed when compiling and running retro-fuse on the 32-bit version of Raspberry Pi OS. (Bug report courtesy of Mark Kampe. Thank you!) Both issues have been reproduced on personal hardware.
Hardware: Raspberry Pi-3B
retro-fuse version: 7
FUSE library version: 2.9
OS Version: Linux raspberrypi 5.15.32-v7+ #1538 SMP Thu Mar 21 19:38:48 BST 2022 armv7l GNU/Linux
A warning during compilation:
cc -std=c11 -g -Wall -O0 -fno-common -MMD -MP -I./src -c -o src/dskio.o src/dskio.c
src/dskio.c: In function 'dsk_setsize':
src/dskio.c:216:19: warning: overflow in conversion from 'long long int' to 'off_t' {aka 'long int'} changes value from '9223372036854775807' to '-1' [-Woverflow]
216 | dsk_end = LLONG_MAX;
| ^~~~~~~~~
A crash while running the unit tests:
Reading symbols from v6fs...
[New LWP 1553]
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/arm-linux-gnueabihf/libthread_db.so.1".
Core was generated by `/home/git/retro-fuse/v6fs -oinitfs -ofssize=4872,use_ino /tmp/tmptqt1w768/fs.ds'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0 0x000121a4 in retrofuse_write (pathname=0x180f8a8 "/f10-1", buf=0xb6d0c058 "*", size=1,
offset=74112, fi=0x0) at src/v6fuse.c:327
327 return v6fs_pwrite((int)fi->fh, buf, size, offset);
(gdb) bt
#0 0x000121a4 in retrofuse_write (pathname=0x180f8a8 "/f10-1", buf=0xb6d0c058 "*", size=1,
offset=74112, fi=0x0) at src/v6fuse.c:327
#1 0xb6ecd150 in fuse_fs_write_buf () from /lib/arm-linux-gnueabihf/libfuse.so.2
#2 0xb6ecd354 in ?? () from /lib/arm-linux-gnueabihf/libfuse.so.2
Backtrace stopped: previous frame identical to this frame (corrupt stack?)
(gdb)
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.