Age | Commit message (Collapse) | Author |
|
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.
|
|
(problem introduced in parent commit).
|
|
The -o max_conns=N option causes multiple SSH processes and response processing threads to
be created. This means that e.g. reading a large file no longer blocks all access to the
filesystem.
The connection is chosen by checking the per-connection statistics:
1. Choose connection with least outstanding requests; if it's a tie,
2. choose connection with least directory handles; if it's a tie,
3. choose connection with least file handles; if it's a tie,
4. choose connection which has already been established.
The implementation assumes that the max_conns values will be small; it
uses linear search.
Example benchmark:
With single connection:
$ sshfs -o max_conns=1,workaround=nobuflimit ebox: mnt
$ cat mnt/tmp/bigfile > /dev/null &
$ time find mnt > /dev/null
real 1m50.432s
user 0m0.133s
sys 0m0.467s
With multiple connections:
$ ~/in-progress/sshfs/build/sshfs -o max_conns=5,workaround=nobuflimit ebox: mnt
$ cat mnt/tmp/bigfile > /dev/null &
$ time find mnt > /dev/null
real 1m15.338s
user 0m0.142s
sys 0m0.491s
This feature was implemented to large extend by Timo Savola <timo.savola@iki.fi>. Thanks
to CEA.fr for sponsoring the remaining work to complete this feature and integrate it into
SSHFS!
|
|
Variables of this kind are created in sshfs_open_common() and freed
in sshfs_release(). Since sshfs_release() calls sshfs_flush(), there
can be no pending write requests before at the time of freeing, so
there is no need for reference counting.
|
|
|
|
This is the default build directory.
|
|
|
|
|
|
Fixes: #182
|
|
|
|
|
|
* Use logical not for booleans
Fixes a gcc 7.4.0 complaint:
sshfs.c:1743:28: warning: ‘~’ on a boolean expression [-Wbool-operation]
sshfs.c:1743:28: note: did you mean to use logical not?
* strdup argument to keep it alive after function return
Fixes gcc 7.4.0 complaint:
sshfs.c: In function ‘sshfs_opt_proc’:
sshfs.c:3488:50: warning: assignment discards ‘const’ qualifier from pointer target type [-Wdiscarded-qualifiers]
|
|
|
|
|
|
Following-up on [1], there was another instance where blksize
was set to a non-zero value, thus making it impossible to
configure global I/O size on macOS, and using [2] the hard-wired
value of 4096 bytes instead, resulting in uniformly poor
performance [3].
With this patch, setting I/O size to a reasonable large value,
will result in much improved performance, e.g.:
-o iosize=1048576
[1] https://github.com/osxfuse/sshfs/commit/5c0dbfe3eb40100f9277e863926f2e7d7c9a5a4c
[2] https://github.com/libfuse/sshfs/blob/4c21d696e9d46bebae0a936e2aec72326c5954ea/sshfs.c#L812
[3] https://github.com/libfuse/sshfs/issues/11#issuecomment-339407557
|
|
The standard header for the poll(3) interface is poll.h[0]. This prevents
a warning when building with musl libc:
In file included from sshfs.c:44:
/usr/include/sys/poll.h:1:2: warning: #warning redirecting incorrect #include <sys/poll.h> to <poll.h> [-Wcpp]
#warning redirecting incorrect #include <sys/poll.h> to <poll.h>
^~~~~~~
[0] https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/poll.h.html
|
|
|
|
|
|
|
|
|
|
When using the "ssh_command" option, commands with multiple spaces in a
row will not be properly parsed. Example:
Properly parsed:
ssh_command = "ssh -o IdentityFile=~/.ssh/id_rsa"
Improperly parsed:
ssh_command = "ssh -o IdentityFile=~/.ssh/id_rsa"
This commit changes the ssh_command parsing logic so that both of the
above examples are considered valid and properly handled.
Fixes: #114.
|
|
|
|
|
|
The current definition of the clean_req() function produces a compiler
warning as it expects 2 parameters but GHRFunc expects 3. This commit
resolves issue #157.
|
|
The manpage says that -o idmap=user maps the UID and GID, but it
apparently only mapped the UID. The code was in place to map the GID as
well, but it was hidden behind #ifdef __APPLE__. This commit removes
those #ifdefs, and in a couple of cases the code inside an #else, to
make the option behave as documented.
|
|
build_by_default arg in custom_target needs 0.40.0
|
|
|
|
We're using libfuse3, so we should be using its fusermount command.
|
|
|
|
As that's what upstream docutils installs by default.
|
|
Also rename "SSHFS hangs" section to something more specific to
differentiate it from this new section.
Cf. issues #77 and #3.
|
|
|
|
|
|
|
|
|
|
Fuse operations expect negated errno values.
|
|
|
|
OS-X is now called macOS
|
|
In libfuse<3, when `fstat_workaround` was true, that meant to always
use the `path` argument to resolve fgetattr instead of the supplied
handle. Before this change, the logic was interpreting
`fstat_workaround` to not use the `path` argument when it was
true. This change reverts to the libfuse<3 behavior.
|
|
|
|
Add workaround to always pass a 0 mode when creating a file
This works around servers that produce an error for any non-zero mode.
|
|
|
|
Newest Meson requires Python 3.5.which isn't available in Trusty.
Pip version pin no longer necessary.
|
|
sshfs.rst: update the documentation.
|
|
|
|
|
|
|
|
|
|
The latter is not supported on OS X.
|
|
|