I have added a lot of unpleasant hacks to the code in order to make it
work with NetBSD librefuse. We really should fix it. I will probably
do it later. Release notes from the upstream are as follows:
Release 3.7.2 (2021-06-08)
--------------------------
* Added a secondary check so if a mkdir request fails with EPERM an access request will be
tried - returning EEXIST if the access was successful.
Fixes: https://github.com/libfuse/sshfs/issues/243
Release 3.7.1 (2020-11-09)
--------------------------
* Minor bugfixes.
Release 3.7.0 (2020-01-03)
--------------------------
* New max_conns option enables the use of multiple connections to improve responsiveness
during large file transfers. Thanks to Timo Savola for doing most of the implementation
work, and thanks to CEA.fr for sponsoring remaining bugfixes and cleanups!
* The `buflimit` workaround is now disabled by default. The corresponding bug in OpenSSH
has been fixed in 2007
(cf. https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=365541#37), so this shouldn't be
needed anymore. If you depend on this workaround, please let the SSHFS maintainers know,
otherwise support for the workaround will be removed completely in a future version.
Release 3.6.0 (2019-11-03)
--------------------------
* Added "-o direct_io" option.
This option disables the use of page cache in kernel.
This is useful for example if the file size is not known before reading it.
For example if you mount /proc dir from a remote host without the direct_io
option, the read always will return zero bytes instead of actual data.
* Added --verbose option.
* Fixed a number of compiler warnings.
* Improved performance under OS X.
Release 3.5.2 (2019-04-13)
--------------------------
* Fixed "-o idmap=user" to map both UID and GID on all OSs.
* Fixed improper handling of sequential spaces spaces in "ssh_command" option
Release 3.5.1 (2018-12-22)
--------------------------
* Documentation updates
* Build system updates
* Added "BindInterface" as valid "-o" option.
Release 3.5.0 (2018-08-28)
--------------------------
* Fixed error code returned by rename(), allowing proper fallback.
* Port to Cygwin.
Release 3.4.0 (2018-06-29)
--------------------------
* Make utimens(NULL) result in timestamp "now" -- no more touched files
dated 1970-01-01
* New `createmode` workaround.
* Fix `fstat` workaround regression.
Release 3.3.2 (2018-04-29)
--------------------------
* New `renamexdev` workaround.
Release 3.3.1 (2017-10-25)
--------------------------
* Manpage is now installed in correct directory.
* SSHFS now supports (or rather: ignores) some options that it may
receive as result of being mounted from ``/etc/mtab``. This includes
things like ``user``, ``netdev``, or ``auto``.
SSHFS 3.3.0 (2017-09-20)
------------------------
* Dropped support for writeback caching (and, as a consequence,
"unreliable append" operation). As of kernel 4.14, the FUSE module's
writeback implementation is not compatible with network filesystems
and there are no imminent plans to change that.
* Add support for mounting from /etc/fstab
* Dropped support for building with autotools.
* Added missing options to man page.
Release 3.2.0 (2017-08-06)
--------------------------
* Re-enabled writeback cache.
* SSHFS now supports O_APPEND.
Release 3.1.0 (2017-08-04)
--------------------------
* Temporarily disabled the writeback cache feature, since there
have been reports of dataloss when appending to files when
writeback caching is enabled.
* Fixed a crash due to a race condition when listing
directory contents.
* For improved backwards compatibility, SSHFS now also silently
accepts the old ``-o cache_*`` options.
Release 3.0.0 (2017-07-08)
--------------------------
* sshfs now requires libfuse 3.1.0 or newer.
* When supported by the kernel, sshfs now uses writeback caching.
* The `cache` option has been renamed to `dir_cache` for clarity.
* Added unit tests
* --debug now behaves like -o debug_sshfs, i.e. it enables sshfs
debugging messages rather than libfuse debugging messages.
* Documented limited hardlink support.
* Added support for building with Meson.
* Added support for more SSH options.
* Dropped support for the *nodelay* workaround - the last OpenSSH
version for which this was useful was released in 2006.
* Dropped support for the *nodelaysrv* workaround. The same effect
(enabling NODELAY on the server side *and* enabling X11 forwarding)
can be achieved by explicitly passing `-o ForwardX11`
* Removed support for `-o workaround=all`. Workarounds should always
enabled explicitly and only when needed. There is no point in always
enabling a potentially changing set of workarounds.
Release 2.9 (2017-04-17)
------------------------
* Improved support for Cygwin.
* Various small bugfixes.
Release 2.8 (2016-06-22)
------------------------
* Added support for the "fsync" extension.
* Fixed a build problem with bitbake
## Important changes in 1.1.1 (2021-03-08)
The only change in this release is a fix for an issue with filenames containing
square brackets.
## Important changes in 1.1 (2021-01-30)
This contains various bug fixes, mostly.
Fixes/improvements:
- Recognize upper/mixed case in input filenames
- Fix file size handling with and without cache
- Various code simplifications/cleanup
New features:
- Log lines now include thread ID and can be customized.
## Important changes in 1.0 (2020-05-24)
mp3fs 1.0 is finally here\!
Fixes/code improvements:
- Many, many bug fixes (buffer overflows, memory leaks, and others)
- Memory handling improvements (using RAII with C++ nearly everywhere)
- Adopting C++11 and modernizing code
- Static tests for code (e.g. clang-format, clang-tidy, IWYU)
New features:
- Ogg Vorbis decoding support
- MP3 VBR encoding support
- Improved, much more customizable logging
Other:
- Docs licensed under GPL 3+ (now entire codebase is distributable as GPL 3)
- All docs switched to Markdown (including manpage, using pandoc)
- Docker image now available
## Important changes in 0.91 (2014-05-14)
This contains mainly bug fixes.
Changes in this release:
- Fixed a segfault caused by an overflow reading the list of available
decoders.
- A number of problems with the previous distribution tar are now fixed.
- The output of `mp3fs --version` has been made more complete.
## Important changes in 0.9 (2014-04-06)
This is a major new release, and brings us very close to a 1.0 release\!
Changes in this release:
- All transcoding code has been completely rewritten. Encoding and decoding
have been abstracted out into base classes defining interfaces that can be
implemented by different codec classes, with just a FLAC decoder and MP3
encoder at the moment.
- The build system has been modified as well to support this usage.
- A number of small bugs or code inefficiencies have been fixed.
## Important changes in 0.32 (2012-06-18)
This release has a lot of bug fixes and some code cleanup.
Changes in this release:
- The file size calculation should always be correct.
- A crash affecting programs like scp that might try to access past the end
of the file has been fixed.
- Too many other little fixes were made to list here. See the ChangeLog for
full details.
## Important changes in 0.31 (2011-12-04)
This is a minor update, with bug fixes and a new feature.
Changes in this release:
- The ReplayGain support added earlier now can be configured through the
command line.
- Filename translation (from .flac to .mp3) is now fixed on filesystems such
as XFS that do not populate dirent.d\_type.
- A couple other minor bugs fixes and changes were made.
## Important changes in 0.30 (2010-12-01)
This is a major new release, and brings mp3fs much closer to an eventual 1.0
release.
Changes in this release:
- Support for additional metadata tags has been added. (From Gregor Zurowski)
- Documentation improvements: the help message is more useful, and a man page
has been added.
- Choosing bitrate is now done with a command-line or mount option, rather
than the old comma syntax.
- A new option to select LAME encoding quality is now available. (From Gregor
Zurowski)
- Debug output can be enabled at runtime.
- Old external libraries included in distribution (StringIO, talloc) have
been removed and replaced.
- Numerous bug fixes have been made. (Some from Gregor Zurowski)
v1.9.5 / 2018-04-27
===================
* Correct a int/off_t buffer overflow in getSize()
* Correct a possible write crash
* Correct encfsctl cat and add reverse cat
* Add -c & -u cmdline options
* Add --noattrcache & --nodatacache cmdline options
* Ignore .encfs6.xml file in reverse mode
* Do not count usage on root path (to avoid resetting the --idle option)
* Use stderr instead of stdout for error messages
* Add the ability to disable data encryption (absolutely discouraged)
* Add Cygwin support
* 0.9.1 - Incorporated fixes for compilation problems with newer gcc
versions. Contributed by Niels de Vos
* 0.9.0 - Make sure the written archive's format is the same or as
close as possible to the original. Due to a bug written files
were always in ustar format. Contributed by Jeff Ebert.
- Add AM_PROG_CC_C_O macro to configure.ac, contributed by
Jeff Ebert
- added option -o password, contributed by Scott Worley
- Pass REG_ENHANCED to regcomp where available (Mac and BSD).
Otherwise \? has no special meaning. Contributed by Michael
J. Walsh
- Removed magic number for block size, it's a constant now.
Contributed by John Delgado
* 0.8.12 - changed naming scheme of temporary files to avoid running
into too long names for the filesystem in /tmp
- fixed renaming a newly created file (it got saved under its
original name)
- activated code for creating symlinks; in old versions, symlinks
were not saved, presumably due to a bug in libarchive, but it
seems to work now.
* 0.8.11 - fixed accidentally broken renaming of files
* 0.8.10 - fixed renaming of directories, it did not work at all anymore
* 0.8.9 - fixed wrong insert into tree when a subdir had the same name as its
parent dir
* 0.8.8 - fixed bug when creating a new file and moving it over an old one,
happens e.g. when saving a file from the geany editor
* 0.8.7 - contribution by KAICHO:
* fixup to 0.8.6: corrected an ifdef
* 0.8.6 - contribution by KAICHO:
* adaptions for CentOS, RHEL and Scientific Linux
* 0.8.5 - fixed stat'ing of hardlinks in ar_readdir
- contributions by Alain Parmentier:
* FormatRaw optimization
* bugfix : use of off_t to support 64bits
* 0.8.4 - added option -o formatraw for readonly support of the FormatRaw
archive files supported by libarchive (kudos to Lee Leahu)
- bugfix: do not do the fuse mount when the archive cannot be read
(also kudos to Lee Leahu)
* 0.8.3 - do not call fuse_main anymore
- force fuse into single-threaded mode due to libarchive not being
thread-safe
Both patches contributed by Timothy Hobbs <timothyhobbs@seznam.cz>,
who found them in the Fedora RPM.
* 0.8.2 - added nosave option, contributed by
Timothy Hobbs <timothyhobbs@seznam.cz>
* 0.8.1 - added missing header file
* 0.8.0 - contributions by Tomáš Čech <sleep_walker@suse.cz>:
* Allow mounting only subtree of archive, strip common part of
path in that case.
* 0.7.0 - contributions by Andrew Brampton:
* simplifications in the code
* speedup by using hashes
* 0.6.2 - contributions by Niels de Vos:
* exchanged posix_rwlocks against mutexes to finally get rid of
the crashes
* replaced some accidental indentations with space against proper tabs
* 0.6.1 - clarified licensing issue (thanks to Niels de Vos for pointing it out)
* 0.6.0 - contributions by Thomas J. Duck:
* autoconf/automake support
* bug reports and fixes for mac-fuse
many thanks for this!
ChangeLog is too long to paste here:
https://bindfs.org/docs/ChangeLog.utf8.txt
Note: On NetBSD, bindfs always maps the root directory "/" regardless
of what source directory specified, unless the -f (foreground) option
is given. The issue existed in 1.8.4 and I thought updating the
package could fix it, but it didn't. The problem was actually in
librefuse, which is now fixed in HEAD:
http://mail-index.netbsd.org/source-changes/2021/11/30/msg134159.html
* v1.0.3
unbreak xmp.py for python2
* v1.0.2
fix race in xmp.py (Carl Drougge)
fix surrogateescape handling in fsyncdir/readdir/write (Carl Drougge)
* v1.0.1
Improve path handling for Python >= 3.6 (thanks to seahawk1986 for the
patch)
* v1.0.0
IOCTL definitions to fix compilation on FreeBSD (patch from Mikhail
Zakharov zmey20000@yahoo.com)
Add poll support (patch from David Lechner david@lechnology.com)
Use bytes objects for read and write data: please note that while this
has no effect on Python 2,it is a breaking change in Python 3; it's
worth it however since it fixes a serious usability bug that
arbitrarily limited file content to valid UTF-8 data (patch from David
Lechner david@lechnology.com)
* v0.3.1
IOCTL support added by Cédric Carrée
* 0.3.0
Add Python 3 compatibility.
2.4.14
Added
- Added `fs.copy.copy_file_if`, `fs.copy.copy_dir_if`, and `fs.copy.copy_fs_if`.
- Added `fs.base.FS.getmodified`.
Changed
- FTP servers that do not support the MLST command now try to use the MDTM command to
retrieve the last modification timestamp of a resource.
Fixed
- Fixed performance bugs in `fs.copy.copy_dir_if_newer`. Test cases were adapted to catch those bugs in the future.
- Fixed precision bug for timestamps in `fs.OSFS.setinfo`.
Packaging changes:
Mark as incompatible with python 2.7, compared to previous release
which is 2.7 only.
Rototill dependencies to align with setup.py, dropping several
previous ones.
Upstream news:
1.16.0:
The major change in this release is the completion of the Python 3
port -- while maintaining support for Python 2. A future release
will remove Python 2 support.
The previously deprecated subcommands "start", "stop", "restart"
and "daemonize" have been removed. You must now use "tahoe run"
(possibly along with your favourite daemonization software).
Several features are now removed: the Account Server,
stats-gatherer and FTP support.
Previous to 1.16, but new to pkgsrc in this update:
Magic Folder has been removed to a separate project.
New command 'tahoe status'.
0.118 2021-02-04 19:09:58-05:00 America/New_York
- No changes from 0.117-TRIAL.
0.117 2021-01-31 21:22:29-05:00 America/New_York (TRIAL RELEASE)
[Tests]
- Skip symlink tests on Windows by actually testing symlinks, as Perl
5.33.5 adds notional support but it's not possible without elevated
privileges.
0.116 2021-01-22 10:32:22-05:00 America/New_York
- No changes from 0.115-TRIAL.
0.115 2021-01-19 12:01:33-05:00 America/New_York (TRIAL RELEASE)
[Tests]
- Fixes tests on MSYS without symlinks enabled.
2.4.13
Added
- Added FTP over TLS (FTPS) support to FTPFS.
- `PathError` now supports wrapping an exception using the `exc` argument.
- Better documentation of the `writable` parameter of `fs.open_fs`, and
hint about using `fs.wrap.read_only` when a read-only filesystem is
required.
Changed
- Make `FS.upload` explicit about the expected error when the parent directory of the destination does not exist.
- Migrate continuous integration from Travis-CI to GitHub Actions and introduce several linters
again in the build steps.
- Stop requiring `pytest` to run tests, allowing any test runner supporting `unittest`-style
test suites.
- `FSTestCases` now builds the large data required for `upload` and `download` tests only
once in order to reduce the total testing time.
- `MemoryFS.move` and `MemoryFS.movedir` will now avoid copying data.
- `FS.removetree("/")` behaviour has been standardized in all filesystems, and
is expected to clear the contents of the root folder without deleting it.
- `FS.getbasic` is now deprecated, as it is redundant with `FS.getinfo`,
and `FS.getinfo` is now explicitly expected to return the *basic* info
namespace unconditionally.
Fixed
- Make `FTPFile`, `MemoryFile` and `RawWrapper` accept [`array.array`](https://docs.python.org/3/library/array.html)
arguments for the `write` and `writelines` methods, as expected by their base class [`io.RawIOBase`]
- Various documentation issues, including `MemoryFS` docstring not rendering properly.
- Avoid creating a new connection on every call of `FTPFS.upload`.
- `WrapReadOnly.removetree` not raising a `ResourceReadOnly` when called.
- `WrapCachedDir.isdir` and `WrapCachedDir.isfile` raising a `ResourceNotFound` error on non-existing path.
- `FTPFS` not listing certain entries with sticky/SUID/SGID permissions set by Linux server.
- `scandir` iterator not being closed explicitly in `OSFS.scandir`, occasionally causing a `ResourceWarning`
to be thrown.
- Incomplete type annotations for the `temp_fs` parameter of `WriteTarFS` and `WriteZipFS`.
The newer versions have a number of runtime dependencies (not checked
at build time, as seems to be the unfortunate custom) that aren't
currently in pkgsrc. Given that this code is quite stable and likely
has users, it's better to stay how it was.
Release 1.13.0 (05-August-2018)
'''''''''''''''''''''''''''''''
New Features
------------
The ``tahoe list-aliases`` command gained the ``--readonly-uri``
option in `PR400`_, which lists read-only capabilities (the default
shows read/write capabilities if available). This command also gained
a ``--json`` option in `PR452`_, providing machine-readable output.
A new command ``tahoe status`` is added, showing some statistics and
currently active operations (similar to the ``/status`` page in the
Web UI). See also `PR502`_.
Immutable uploads now use the "servers of happiness" algorithm for
uploading shares. This means better placement of shares on available
servers. See `PR416`_.
To join a new client to a grid, the command ``tahoe invite`` was
added. This uses `magic wormhole`_ to connect two computers and
exchange the required information to start the client. The "client
side" of this command is the also new option ``tahoe
create-client --join=``. Together, this provides a way to provision a
new client without having to securely transmit the fURL and other
details. `PR418`_
``tahoe backup`` now reports progress. `PR474`_
The ``tub.port=`` option can now accept ``listen:i2p`` or
``listen:tor`` options to use popular anonymity networks with storage
servers. See `PR437`_
The place where storage servers put shares (the "storage path") is now
configurable (`PR472`_).
A PyInstaller-based build is now available (`PR421`_). A "Docker
compose" setup for development purposes is now available (`PR445`_).
There is now a recommended workflow for Zcash-based donations to support
storage server operators (`PR506`_).
Web UI Changes
--------------
We set the "Referrer-Policy: no-referrer" header on all requests. The
Welcome page now understands the JSON option (`PR430`_) and OPTIONS
requests are handled (`PR447`_).
Magic Folder Changes
--------------------
Multiple magic-folders in a single Tahoe client are now
supported. Bugs with ``.backup`` files have been fixed, meaning
spurious ``.backup`` files will be produced less often (`PR448`_,
`PR475`_). Handling of default umask on new magic-folder files is
fixed in `PR458`_. The user mtime value is now correctly preserved
(`PR457`_).
A bug in ``tahoe magic-folder status`` causing active operations to
sometimes not show up is fixed (`PR461`_). If a directory is missing,
it is created (`PR492`_).
2.4.12
Added
Missing mode attribute to _MemoryFile objects returned by MemoryFS.openbin.
Missing readinto method for MemoryFS and FTPFS file objects.
Added compatibility if a Windows FTP server returns file information to the LIST command with 24-hour times.
Changed
Start testing on PyPy. Due to 342 we have to treat PyPy builds specially and allow them to fail, but at least we'll be able to see if we break something aside from known issues with FTP tests.
Include docs in source distributions as well as the whole tests folder, ensuring conftest.py is present, fixes 364.
Stop patching copy with Python 3.8+ because it already uses sendfile.
Fixed
Fixed crash when CPython's -OO flag is used
Fixed error when parsing timestamps from a FTP directory served from a WindowsNT FTP Server, fixes 395.
Fixed documentation of Mode.to_platform_bin.
Fixed the code example in the "Testing Filesystems" section of the "Implementing Filesystems" guide.
Fixed FTPFS.openbin not implicitly opening files in binary mode like expected from openbin.