aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2014-02-02Merge tag 'sshfs_2_5'Benjamin Fleischer
Conflicts: sshfs.c
2014-01-14Released 2.5sshfs_2_5Miklos Szeredi
2014-01-08Implement asynchronous readdirAlexander Neumann
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>
2014-01-08Add -o disable_hardlink option (debian bug #670926)Miklos Szeredi
Reported by Louis-David Mitterrand
2014-01-07Map SSH2_FX_FAILURE to ENOTEMPTY for rmdirMiklos Szeredi
Reported by Ross Lagerwall
2013-08-03Merge remote-tracking branch 'upstream/master'Benjamin Fleischer
Conflicts: ChangeLog configure.ac sshfs.1.in sshfs.c
2013-04-11fix a typo in man pageMiklos Szeredi
2013-02-18fix missing newline in manual pageAlan Jenkins
2013-02-05Add FIXME for deadlock if $PATH contains mountpoint.Miklos Szeredi
Reported by Joachim Kopp
2013-01-08Update copyright year in darwin_compatBenjamin Fleischer
2013-01-08Add unnamed semaphore implementation for Mac OS XBenjamin Fleischer
In the past we relied on libosxfuse including a working unnamed semaphore implmentation for Mac OS X. This will not be the case in future releases of OSXFUSE, therefore we need to add our own implementation.
2012-05-14When checking root directory use LSTAT not STATMiklos Szeredi
This prevents I/O error being returned after a successful mount if a symlink is mounted. Reported by Bart Friederichs
2012-03-11Bump version to OSXFUSE SSHFS 2.4.1Benjamin Fleischer
The only difference between version 2.4.0 and 2.4.1 is the updated man page to reflect Darwin/OS X specific changes to upstream SSHFS.
2012-03-11Add Darwin/OS X specific information to man pageBenjamin Fleischer
* Volumes are unmounted using "umount" not "fusermount" * idmap=user is the deafault setting on Darwin/OS X
2012-03-09Bump version to OSXFUSE SSHFS 2.4.0Benjamin Fleischer
2012-03-09Use "#ifdef __APPLE__" instead of "#if __APPLE__"Benjamin Fleischer
2012-03-09Released 2.4Miklos Szeredi
2012-03-09make sure idmap files aren't writable by othersMike Kelly
otherwise, other local users could change the mapping, and gain access to things they shouldn't
2012-03-09Add slave option to run sftp over stdin and stdoutChris Wolfe
Add -o slave. This option routes the sftp communication over stdin and stdout, bypassing SSH and network.
2012-03-09Split fd into separate read and write pipesChris Wolfe
2012-03-09fix unused but set variablesMiklos Szeredi
cache.c: In function ‘cache_add_attr’: cache.c:167:9: warning: variable ‘now’ set but not used [-Wunused-but-set-variable] cache.c: In function ‘cache_add_dir’: cache.c:188:9: warning: variable ‘now’ set but not used [-Wunused-but-set-variable] cache.c: In function ‘cache_add_link’: cache.c:212:9: warning: variable ‘now’ set but not used [-Wunused-but-set-variable]
2012-03-09Remove some trailing whitespace.Chris Wolfe
Verified with `cat -vet` and `grep '\s$'`
2012-03-09skip blank linesMike Kelly
2012-03-09increase portabilityMike Kelly
getline() isn't widely available yet, use fgets() instead
2012-03-09fix typo in error messageMike Kelly
2012-03-09default to erroring if we can't remap a uid/gidMike Kelly
add a '-o nomap=ignore|error' option, which defaults to 'error'
2012-03-09Make IDMAP_USER the default option on OS XBenjamin Fleischer
UID/GID mapping had been enabled in previous versions of SSHFS for MacFUSE/ OSXFUSE by default. This is the expected behavior.
2012-03-08Released 2.4sshfs_2_4Miklos Szeredi
2012-03-08make sure idmap files aren't writable by othersMike Kelly
otherwise, other local users could change the mapping, and gain access to things they shouldn't
2012-02-14Add slave option to run sftp over stdin and stdoutChris Wolfe
Add -o slave. This option routes the sftp communication over stdin and stdout, bypassing SSH and network.
2012-02-14Split fd into separate read and write pipesChris Wolfe
2012-02-08fix unused but set variablesMiklos Szeredi
cache.c: In function ‘cache_add_attr’: cache.c:167:9: warning: variable ‘now’ set but not used [-Wunused-but-set-variable] cache.c: In function ‘cache_add_dir’: cache.c:188:9: warning: variable ‘now’ set but not used [-Wunused-but-set-variable] cache.c: In function ‘cache_add_link’: cache.c:212:9: warning: variable ‘now’ set but not used [-Wunused-but-set-variable]
2012-02-08Remove some trailing whitespace.Chris Wolfe
Verified with `cat -vet` and `grep '\s$'`
2012-01-22Add -o idmap=file, -o uidmap=FILE, -o gidmap=FILEMike Kelly
These options allow you to create a pair of local files, with username:uid/groupname:gid pairs, one per line. Alternatively, files can be in standard /etc/passwd / /etc/group format. The uid/gids are for the remote server, their local counterparts are looked up with a local getpwnam/getgrnam call. Any stat() calls will show with the remapped local uid/gid, and any chown() calls will be remapped back to the remote uid/gid.
2012-01-22Fix a possible small memory leakMike Kelly
2012-01-22Fix typo in error messageMike Kelly
s/FD_CLOESEC/FD_CLOEXEC/
2012-01-22Fix error handling in sshfs_read_endMiklos Szeredi
Reported by Mike Kelly
2012-01-22Make chown respect the UID mapping policyMiklos Szeredi
Reported and tested by Vivenzio Pagliari
2012-01-22Submit max 32k reads and writes to the sftp serverMiklos Szeredi
Also don't limit the kernel to 64k reads and writes, rather split into 32k sized chunks and send them to the server all at once. This is more efficient and less demanding from the server. Reported by Ludovic Courtès. Fix suggested by Niels Möller
2012-01-22Add locking around modifver and connverMiklos Szeredi
2012-01-22Fix double free if reconnection races with request sendingMiklos Szeredi
Patch by E. Kuemmerle
2012-01-22Remove "-oPreferredAuthentications" from ssh optionsMiklos Szeredi
Remove "-oPreferredAuthentications" from ssh options if the "password_stdin" option is used. Reported by E. Kuemmerle
2012-01-22Add "FIXME: really needs LSETSTAT extension (debian Bug#640038)"Miklos Szeredi
2012-01-22sshfs: fstat workaroundPercy Jahn
Add "-oworkaround=fstat" for SFTP servers which don't support the FSTAT message.
2012-01-20Apply modified sshfs 2.2 patch from MacFUSEBenjamin Fleischer
Based on Amit Singh's work at http://code.google.com/p/macfuse/
2011-12-21skip blank linesMike Kelly
2011-12-21increase portabilityMike Kelly
getline() isn't widely available yet, use fgets() instead
2011-12-21fix typo in error messageMike Kelly
2011-12-21default to erroring if we can't remap a uid/gidMike Kelly
add a '-o nomap=ignore|error' option, which defaults to 'error'
2011-12-20Add -o idmap=file, -o uidmap=FILE, -o gidmap=FILEMike Kelly
These options allow you to create a pair of local files, with username:uid/groupname:gid pairs, one per line. Alternatively, files can be in standard /etc/passwd / /etc/group format. The uid/gids are for the remote server, their local counterparts are looked up with a local getpwnam/getgrnam call. Any stat() calls will show with the remapped local uid/gid, and any chown() calls will be remapped back to the remote uid/gid.