Releases: FloGa/scfs
0.10.4
0.10.3
Changes in 0.10.3
- Update dependencies for security fixes
0.10.2
Changes in 0.10.2
- Update dependencies for security fixes
0.10.1
Changes in 0.10.1
-
Upgrade fuser to get rid of abandoned users dep
-
Update dependencies
0.10.0
Changes in 0.10.0
-
Upgrade to clap4
-
Rework and simplify Cli
We now use the clap derive module to simplify the Cli. Also, split and
cat are now proper subcommands. Having them introduced as a non-optional
flag before was a poor decision. -
Update dependencies
0.9.2
Changes in 0.9.2
-
Update dependencies to get security fixes
-
Avoid using deprecated fucntion mount_spawn
0.9.1
Changes in 0.9.1
Update dependencies to fix security issues. Furthermore:
-
Replace dependency fuse with newer fuser
fuser
(https://github.com/cberner/fuser) is a more maintained and
up-to-date fork offuse
(https://github.com/zargony/fuse-rs), which
ensures smoother future development. -
Use running integer as file handle
This way, we do not need to rely on the time package to give a pseudo
unique value. -
Use running integer as inode
This way, we do not need to rely on the time package to give a pseudo
unique value. -
Remove unused time dependency
0.9.0
Changes in 0.9.0
-
Check mirror and mountpoint for sanity
-
Mirror and mountpoint have to exist.
-
Mirror must not be in a subfolder of mountpoint, to avoid recursive
mounts. This is also in accordance to EncFS.
-
-
Run scfs by default to easen rapid development
Since we build more than just one binary,
cargo run
does not know
which one to call by default. For this case, there is the key
"default-run", which tellscargo run
which binary to use when no
--bin
flag is present. -
Notify main loop when filesystem is dropped
The filesystem implements the Drop trait now, which makes it possible to
run a function when the filesystem is unmouted in a way other than by
terminating the main loop (most prominently by usingumount
directly).The previous situation was, when the filesystem was unmounted via
umount
, then the main loop would hang infinitely, because there was no
way to notify the main loop. Now we send a quit signal when the
filesystem is dropped, so the main loop can exit normally. -
Canonicalize paths
Using absolute paths is necessary for a daemon, since a daemon usually
changes its working directory to "/" so as to not lock a directory. -
Add daemon flag which puts program in background
The daemonizing is done after the filesystem has been created, to let
the initialization happen in foreground. This minimizes the time the
daemon is running but the filesystem is not mounted yet. -
Add flag to create mountpoint directory
The mirror will intentionally not be created, since the mount is
readonly and a missing mirror directory is most likely a typo from the
user. -
Add converter for symbolic quantities
This converter will be used to calculate the blocksize for a SplitFS
mount. The size can now be given as an integer or optionally with a
quantifier like "K", "M", "G", and "T", each one multiplying the base
with 1024.
0.8.0
Changes in 0.8.0
-
Implement readlink
-
Correctly handle symlinks
-
Replace each metadata with symlink_metadata
Symlinks should be presented as-is, so it should never be necessary to
traverse them. -
Silently ignore unsupported filetypes
-
Add convenience wrappers for catfs and splitfs
With these wrappers, it is possible to mount the respective filesystem
without explicitly specifying the mode parameter.
0.7.0
Changes in 0.7.0
-
Make blocksize customizable
It is now possible to use a custom blocksize in SplitFS. For example, to
use 1MB chunks instead of the default size of 2MB, you would go with:scfs --mode=split --blocksize=1048576 <base directory> <mount point>
Where 1048576 is 1024 * 1024, so one megabyte in bytes.
-
Short circuit when reading a size of 0
-
Do not materialize vector after each chunk
This step was highly unnecessary anyway and it needlessly consumed time
and memory. An Iterator can be flattened in the same way, but without
the penalty that comes with materializing. -
Do not calculate size of last chunk to read
By simply reading
blocksize
bytes and only takingsize
before
materializing, we can save a lot of possible mis-calculation regarding
the last chunk.We make use of two properties here:
-
Reading after EOF is a no-op, so using a higher number on the
reading operation does not hurt. -
The reading operations take only place once we materialize the byte
array. So even if we issue to read much more bytes than necessary on
the last chunk, it will not hurt, since we onlytake
the correct
number of bytes on materializing.
-
-
Fix off-by-one error
-
Correctly handle empty files
Create at least one chunk, even if it is empty. This way, we can
differentiate between an empty file and an empty directory. -
Add test suites to modules
With automated tests we now can effectively check if new features work
as intended and that they do not break existing code.