Age | Commit message (Collapse) | Author |
|
|
|
|
|
|
|
Fixes: #15.
|
|
|
|
|
|
Before FUSE 2.9, FUSE had to emulate unlink() if a file was still open
via renaming to a hidden file. This was due to the requirement that a
valid "path" argument must be submitted for many FUSE operations. FUSE
2.9 introduced the flag_nullpath_ok and flag_nopath flags that allow a
FUSE file system to signal to FUSE that the "path" argument may be NULL
in certain operations.
sshfs doesn't require paths if the cache isn't used so communicate
that information to the FUSE layer.
|
|
OpenSSH implements fsync() via the extension "fsync@openssh.com". This
change uses that extension when receiving a FUSE fsync request.
|
|
|
|
Restore FAQ file
|
|
This commit restores the FAQ file present in sshfs versions up to 2.5.
Changes since the version in the 2.5 release:
- Remove most wiki markup
- Edit question about bug reports to point to the Github issue tracker
- Remove unanswered questions
- Minor formatting
|
|
Make cache parameters configurable
|
|
|
|
Allow the user to customize the cache regular and minimum clean intervals
as flags via the new cache_clean_interval and cache_min_clean_interval
options.
While doing this, rename the internal variables and constants to suffix
them with their unit (seconds).
|
|
Allow the user to customize the size of the sshfs cache by adding a new
max_cache_size flag and turning the hardcoded constant into a variable.
|
|
All timeouts are in seconds, so add a suffix to the identifier names to
clearly denote the unit.
|
|
Merge osxfuse.
|
|
Document the strage-looking symbol interposition that is necessary for the
OS X case.
While doing this, homogenize the code to do the real connect call for both
the Linux and OS X cases into a helper function. This logic is generic
and should not be replicated into various OS-specific cases.
|
|
Revision b4023a19 added an mlock call to ensure the sshfs password is kept
in memory, but did so only for OS X. This is a good idea in general, so
let's remove the condition.
|
|
Revision b4023a19dd7ec7a099d2e0df491547cf3bb6bec3, which imported the
MacFUSE-specific sshfs fixes into osxfuse-sshfs, added a lock to handle
the refs reference counter of the sshfs_file structure. However, this
lock was only added for OS X, which is a very strange thing to do.
One may think that this was only because MacFUSE 2.2 had some semantics
that differed from regular FUSE, and that would have been quite stupid
for compatibility reasons. A few simple tests show no issues after
removing this lock, so let's keep it out for now. If things break, we
know what to look at.
|
|
Move the logic to determine which values to stick into the manual page
to the configure script and replace the logic to build the sshfs.1
manual page with sed instead of abusing cpp.
I'm not using AC_OUTPUT here because this macro is typically used to
generate support build files. Final artifacts of the build should, in
general, be built by the Makefile itself.
|
|
When defining a -I flag to point into the source directory, we should
prefix the directory with ${srcdir} so that it can be found when the
build is configured to use a build directory that differs from the
source directory.
This fixes "make distcheck".
|
|
|
|
|
|
Makefile.am always sets LIBDIR in CPPFLAGS. There is no need for sshfs.c
to redefine it to a bogus value when not present, and much less to only
do so for the Darwin case only.
|
|
cache_enabled leaked the cache.on setting from the cache module abstraction
back into sshfs, and it only did so for the Darwin case.
This hack was being used to avoid calling cache_add_attr and cache_invalidate
when the cache was disabled... but these two functions already do nothing when
in that case: there is no need to do a second check in the caller.
|
|
Now that we are unifying osxfuse's sshfs into libfuse's version, there
should not be two different version identifiers. Drop osxfuse's one.
|
|
* Fix dependencies of the sshfs.1 target to actually specify sshfs.1.in as a
source.
* Ensure that failures during the generation of sshfs.1 do not result in a
potentially bogus manpage by first outputting the contents to a temporary
file unknown to the Makefile rule and then replacing the target file once
all is known to be OK.
* Use $(AM_V_GEN) in the command to respect automake's silent rules.
|
|
Operating system names are not architectures; therefore, rename the arch
variable to osname to better represent its contents.
While doing this, drop a bunch of unused values from the osname.
|
|
Pull in all changes from osxfuse's fork of sshfs into libfuse's sshfs.
There need not be two different copies of this codebase, particularly
because libfuse's version is already autoconf-ified and can support
multiple platforms.
The merge is mostly clean with just a few manual edits to resolve
conflicts.
|
|
Fix typo in README.md
|
|
Typo fixed
|
|
|
|
|
|
|
|
|
|
This is recommended for forward-compatibility.
|
|
Up to now, the Changelog has essentially been a (manually maintained)
copy of the git commit history. This doesn't seem to have any point
other than following the GNU coding standards. I believe it's much
better to use the Changelog to summarize the release-to-release
changes that are most important for users (as was done in the NEWS
file until now).
|
|
The GNU flavor merely requires to existence of some files (including
README, but we prefer README.md), so there seems to be little point
in using it.
|
|
|
|
Remaining README file is just to make automake happy.
|
|
read from stdin to 1024 characters.
Reported by: Mario A. Valdez-Ramirez.
|
|
|
|
sshfs-fuse always returned 0 in access(file, X_OK) calls, causing nautilus
to prompt "Do you want to run "login.defs", or display its contents?" for
text files that were not executable.
Reported by: Alkis Georgopoulos
|
|
|
|
|
|
|
|
Conflicts:
sshfs.c
|
|
|
|
Accessing directories with many (several thousand) files over sshfs is
slow, because most SFTP server implementations only send a fixed amount
of entries per READDIR command (e.g. OpenSSH SFTP: 100 entries). This
patch implements sending several READDIR commands in parallel, in order
to speed up directory listing in these cases.
An option (sync_readdir) is also added so that users can easily switch
on the old behaviour.
The performance improvement is astonishing. Accessing a directory with
30k files in from a remote server that has a RTT of 15ms via OpenSSH
SFTP:
Synchronous readdir:
$ ./sshfs -o sync_readdir host:/tmp /mnt/temp
$ time "ls" -1 /mnt/temp/test | wc -l
30000
"ls" -1 /mnt/temp/test 0.07s user 0.01s system 1% cpu 6.928 total
Asynchronous readdir:
$ ./sshfs host:/tmp /mnt/temp
$ time "ls" -1 /mnt/temp/test | wc -l
30000
"ls" -1 /mnt/temp/test 0.07s user 0.01s system 12% cpu 0.605 total
Accessing a directory with 100k files shows even more dramatic
improvement:
Synchronous readdir:
$ ./sshfs -o sync_readdir host:/tmp /mnt/temp
$ time "ls" -1 /mnt/temp/test2 | wc -l
100000
"ls" -1 /mnt/temp/test2 0.67s user 1.22s system 0% cpu 3:31.56 total
Asynchronous readdir:
$ ./sshfs host:/tmp /mnt/temp
$ time "ls" -1 /mnt/temp/test2 | wc -l
100000
"ls" -1 /mnt/temp/test2 0.20s user 0.03s system 14% cpu 1.631 total
This can easily be reproduced by creating a directory on a server and
touching a lot of files in it:
$ mkdir /tmp/test
$ cd /tmp/test
$ for i in $(seq 1 30000); do touch $i; done
Signed-off-by: Alexander Neumann <alexander@bumpern.de>
|