aboutsummaryrefslogtreecommitdiff
path: root/sshfs.c
AgeCommit message (Collapse)Author
2017-01-12Merge pull request #23 from billziss-gh/masterNikolaus Rath
Port SSHFS to Cygwin
2016-07-28Remove call to g_slice_set_config()Benjamin Fleischer
It is unclear why G_SLICE_CONFIG_ALWAYS_MALLOC has been set before but doing so with the latest version of GLib (2.46.2) results in the following warning: GLib-CRITICAL **: g_slice_set_config: assertion 'sys_page_size == 0' failed This fixes issue osxfuse/sshfs#17
2016-06-22port sshfs to cygwinBill Zissimopoulos
2016-06-06Require paths for truncate/fstat workaroundsRian Hunter
Commit 74bfa3850a2568f96dd1d090a9386534c9bb4629 allowed sshfs to run without requiring a non-NULL path argument for certain operations. This was erroneous in the case of using certain workarounds.
2016-06-01Support the lack of paths when cache is offRian Hunter
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.
2016-06-01Implement support for "fsync@openssh.com"Rian Hunter
OpenSSH implements fsync() via the extension "fsync@openssh.com". This change uses that extension when receiving a FUSE fsync request.
2016-02-10Expose the cache clean interval settings as flagsJulio Merino
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).
2016-02-10Expose the maximum cache size setting as a flagJulio Merino
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.
2016-02-08Unconditionally mlock the password in memoryJulio Merino
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.
2016-02-08Remove apparently-unnecessary lockJulio Merino
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.
2016-02-08Avoid using cpp for sshfs.1 generationJulio Merino
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.
2016-02-08Remove LIBDIR explicit definitionJulio Merino
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.
2016-02-08Drop the cache_enabled hackJulio Merino
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.
2016-02-08Drop OSXFUSE_SSHFS_VERSIONJulio Merino
Now that we are unifying osxfuse's sshfs into libfuse's version, there should not be two different version identifiers. Drop osxfuse's one.
2016-02-08Merge remote-tracking branch 'osxfuse/master' into merge-osxfuseJulio Merino
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.
2015-04-14sshfs: Increase the maximum length of the passwordMiklos Szeredi
read from stdin to 1024 characters. Reported by: Mario A. Valdez-Ramirez.
2014-02-10sshfs-return-the-correct-x_ok-accessMiklos Szeredi
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
2014-02-03Bump version to 2.5.0Benjamin Fleischer
2014-02-02Merge tag 'sshfs_2_5'Benjamin Fleischer
Conflicts: sshfs.c
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-02-05Add FIXME for deadlock if $PATH contains mountpoint.Miklos Szeredi
Reported by Joachim Kopp
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-09Bump version to OSXFUSE SSHFS 2.4.0Benjamin Fleischer
2012-03-09Use "#ifdef __APPLE__" instead of "#if __APPLE__"Benjamin Fleischer
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-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-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-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