Compare commits
19 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 3087690aba | |||
| 3a60def57e | |||
| f5b939d40c | |||
| 9b3fb20112 | |||
| d20b25cd2d | |||
| 055649e2fa | |||
| d18349da3b | |||
| cf10c34573 | |||
| 008cf7bcf4 | |||
| e4e14109ad | |||
| 48122e8043 | |||
| 6b4415ada4 | |||
| 6a2d06e36f | |||
| 334e9e6a27 | |||
| 91c1f2ba9e | |||
| c1d62f2032 | |||
| 61524cd1e8 | |||
| 9f4ba56b52 | |||
| ce6753c88f |
@@ -1 +1,22 @@
|
||||
Miklos Szeredi <miklos@szeredi.hu>
|
||||
Current Maintainer
|
||||
------------------
|
||||
|
||||
Nikolaus Rath <Nikolaus@rath.org>
|
||||
|
||||
|
||||
Past Maintainers
|
||||
----------------
|
||||
|
||||
Miklos Szeredi <miklos@szeredi.hu> (until 12/2015)
|
||||
|
||||
|
||||
Contributors (autogenerated list)
|
||||
---------------------------------
|
||||
|
||||
Alan Jenkins <alan.christopher.jenkins@gmail.com>
|
||||
Alexander Neumann <alexander@bumpern.de>
|
||||
Chris Wolfe <cwolfe@chromium.org>
|
||||
Mike Kelly <mike@pair.com>
|
||||
Miklos Szeredi <miklos@szeredi.hu>
|
||||
Nikolaus Rath <Nikolaus@rath.org>
|
||||
Percy Jahn <email@percyjahn.de>
|
||||
|
||||
@@ -1,573 +1,139 @@
|
||||
2012-03-08 Miklos Szeredi <miklos@szeredi.hu>
|
||||
Release 2.7 (2015-01-28)
|
||||
------------------------
|
||||
|
||||
* Released 2.4
|
||||
* New maintainer (Nikolaus Rath <Nikolaus@rath.org>)
|
||||
|
||||
2012-03-08 Miklos Szeredi <miklos@szeredi.hu>
|
||||
|
||||
* Make sure idmap files aren't writable by others otherwise, other
|
||||
local users could change the mapping, and gain access to things
|
||||
they shouldn't. Patch by Mike Kelly
|
||||
Release 2.6 (2014-01-14)
|
||||
------------------------
|
||||
|
||||
2012-02-08 Chris Wolfe <cwolfe@chromium.org>
|
||||
* Some performance improvements for large directories.
|
||||
* New `disable_hardlink` option.
|
||||
* Various small bugfixes.
|
||||
|
||||
* Add -o slave. This option routes the sftp communication over stdin
|
||||
and stdout, bypassing SSH and network.
|
||||
Release 2.4 (2012-03-08)
|
||||
------------------------
|
||||
|
||||
2011-12-16 Mike Kelly <mike@pair.com>
|
||||
* New `slave` option.
|
||||
* New `idmap`, `uidmap` and `gidmap` options.
|
||||
* Various small bugfixes.
|
||||
|
||||
* Add -o idmap=file, -o uidmap=FILE, -o gidmap=FILE. These options
|
||||
allow you to create a pair of local files, similar to /etc/passwd or
|
||||
/etc/group files from the remote server, and use those to remap all
|
||||
the given UIDs/GIDs.
|
||||
Release 2.3 (2011-07-01)
|
||||
------------------------
|
||||
|
||||
2011-11-25 Miklos Szeredi <miklos@szeredi.hu>
|
||||
* Support hard link creation if server is OpenSSH 5.7 or later
|
||||
* Small improvements and bug fixes
|
||||
* Check mount point and options before connecting to ssh server
|
||||
* New 'delay_connect' option
|
||||
|
||||
* Make chown respect the UID mapping policy. Reported and tested
|
||||
by Vivenzio Pagliari
|
||||
Release 2.2 (2008-10-20)
|
||||
------------------------
|
||||
|
||||
2011-11-16 Miklos Szeredi <miklos@szeredi.hu>
|
||||
* Handle numerical IPv6 addresses enclosed in square brackets
|
||||
* Handle commas in usernames
|
||||
|
||||
* Submit max 32k reads and writes to the sftp server. 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
|
||||
Release 2.1 (2008-07-11)
|
||||
------------------------
|
||||
|
||||
2011-11-14 Miklos Szeredi <miklos@szeredi.hu>
|
||||
* Small improvements and bug fixes
|
||||
|
||||
* Fix double free if reconnection races with request sending.
|
||||
Patch by E. Kuemmerle
|
||||
Release 2.0 (2008-04-23)
|
||||
------------------------
|
||||
|
||||
* Add locking around modifver and connver
|
||||
* Support password authentication with pam_mount
|
||||
|
||||
2011-10-21 Miklos Szeredi <miklos@szeredi.hu>
|
||||
* Support atomic renames if server is OpenSSH 4.9 or later
|
||||
|
||||
* Remove "-oPreferredAuthentications" from ssh options if the
|
||||
"password_stdin" option is used. Reported by E. Kuemmerle
|
||||
* Support getting disk usage if server is OpenSSH 5.1 or later
|
||||
|
||||
2011-08-24 Miklos Szeredi <miklos@szeredi.hu>
|
||||
* Small enhancements and bug fixes
|
||||
|
||||
* Add "-oworkaround=fstat" for SFTP servers which don't support
|
||||
the FSTAT message. Patch by: Percy Jahn
|
||||
What is new in 1.9
|
||||
------------------
|
||||
|
||||
2011-07-01 Miklos Szeredi <miklos@szeredi.hu>
|
||||
* Fix a serious bug, that could result in sshfs hanging, crashing, or
|
||||
reporting out-of-memory
|
||||
|
||||
* Released 2.3
|
||||
What is new in 1.8
|
||||
------------------
|
||||
|
||||
2011-07-01 Miklos Szeredi <miklos@szeredi.hu>
|
||||
* Bug fixes
|
||||
|
||||
* Add hard link operation. Works if the server supports the
|
||||
"hardlink@openssh.com" protocol extension.
|
||||
What is new in 1.7
|
||||
------------------
|
||||
|
||||
2011-03-25 Miklos Szeredi <miklos@szeredi.hu>
|
||||
* Tolerate servers which print a banner on login
|
||||
|
||||
* Fix possible deadlock on reconnection. Reported by Florian
|
||||
Zumbiehl
|
||||
* Small improvements
|
||||
|
||||
2011-01-25 Miklos Szeredi <miklos@szeredi.hu>
|
||||
What is new in 1.6
|
||||
------------------
|
||||
|
||||
* Fix cleanup when ssh connection is terminated. This prevents
|
||||
sshfs hanging when the server is rebooted, for example.
|
||||
* Workaround for missing truncate operation on old sftp servers
|
||||
|
||||
2010-03-16 Miklos Szeredi <miklos@szeredi.hu>
|
||||
* Bug fixes
|
||||
|
||||
* Set FD_CLOEXEC on fuse device. This prevents deadlocks that
|
||||
happen in some circumstances (bugzilla.kernel.org #12864).
|
||||
Reported by Tim Connors
|
||||
What is new in 1.5
|
||||
------------------
|
||||
|
||||
2009-07-15 Miklos Szeredi <miklos@szeredi.hu>
|
||||
* Improvements to read performance. Now both read and write
|
||||
throughput should be very close to 'scp'
|
||||
|
||||
* Check mountpoint and fuse options before starting an ssh
|
||||
session (debian bug #535333). This is only supported if compiled
|
||||
against libfuse-2.6 or later. Reported by Greg Kochanski
|
||||
* If used with FUSE 2.6.0 or later, then perform better data caching.
|
||||
This should show dramatic speed improvements when a file is opened
|
||||
more than once
|
||||
|
||||
* Check that the remote path specified refers to the same type of
|
||||
file as the mountpoint, i.e. both are directories or both are
|
||||
non-directories (debian bug #535343). Reported by Greg Kochanski
|
||||
* Bug fixes
|
||||
|
||||
* Allow mounting a single non-directory from the server
|
||||
What is new in 1.4
|
||||
------------------
|
||||
|
||||
2009-07-15 Sebastian Dransfeld <sebastid@tango.flipp.net>
|
||||
* Updated to version 25 of libfuse API
|
||||
|
||||
* Add option 'delay_connect': This will always create the sshfs mount,
|
||||
even if the connection to the server can't be established.
|
||||
* This means that the 'cp' of readonly file to sshfs bug is finally
|
||||
solved (as long as using libfuse 2.5.0 or later *and* Linux 2.6.15
|
||||
or later)
|
||||
|
||||
2009-01-27 Miklos Szeredi <miklos@szeredi.hu>
|
||||
* Sshfs now works on FreeBSD
|
||||
|
||||
* Print usage information and version to stdout, not stderr.
|
||||
Libfuse also needs to be fixed up. Reported by Kārlis Repsons
|
||||
* Added option to "transform" absolute symbolic links
|
||||
|
||||
2008-10-20 Miklos Szeredi <miklos@szeredi.hu>
|
||||
What is new in 1.3
|
||||
------------------
|
||||
|
||||
* Released 2.2
|
||||
* Add workaround for failure to rename to an existing file
|
||||
|
||||
2008-10-20 Miklos Szeredi <miklos@szeredi.hu>
|
||||
* Simple user ID mapping
|
||||
|
||||
* Escape commas in fsname option if libfuse supports it
|
||||
* Estimate disk usage of files based on size
|
||||
|
||||
2008-10-08 Miklos Szeredi <miklos@szeredi.hu>
|
||||
* Report "infinite" disk space
|
||||
|
||||
* Handle numerical IPv6 addresses enclosed in square brackets.
|
||||
Reported by Andre-John Mas
|
||||
* Bug fixes
|
||||
|
||||
* Fix error if username contains a comma character. Reported by
|
||||
Yang Zhang
|
||||
What is new in 1.2
|
||||
------------------
|
||||
|
||||
* Fix harmless glib assertations with "cache=no"
|
||||
* Better compatibility with different sftp servers
|
||||
|
||||
2008-07-11 Miklos Szeredi <miklos@szeredi.hu>
|
||||
* Automatic reconnect (optional)
|
||||
|
||||
* Released 2.1
|
||||
What is new in 1.1
|
||||
------------------
|
||||
|
||||
2008-07-11 Miklos Szeredi <miklos@szeredi.hu>
|
||||
* Performance improvements:
|
||||
|
||||
* Fix statvfs extension to match the current protocol in
|
||||
opensshfs
|
||||
- directory content caching
|
||||
|
||||
* Check version numbers of extensions, so such changes wouldn't
|
||||
cause stupid behavior
|
||||
- symlink caching
|
||||
|
||||
2008-06-24 Miklos Szeredi <miklos@szeredi.hu>
|
||||
- asynchronous writeback
|
||||
|
||||
* Add '-F' option to specify the ssh config file. Patch by Pat
|
||||
Pascal.
|
||||
- readahead
|
||||
|
||||
2008-05-06 Miklos Szeredi <miklos@szeredi.hu>
|
||||
* Fixed '-p' option
|
||||
|
||||
* Fix bug in caching which could cause file corruption for append
|
||||
mode writes. Reported by Jose Alonso
|
||||
What is new in 1.0
|
||||
------------------
|
||||
|
||||
2008-05-05 Miklos Szeredi <miklos@szeredi.hu>
|
||||
|
||||
* Fix compile on OS X. Original patch from Michael G Schwern
|
||||
|
||||
* Fix compile on Solaris. Reported by Jean-Jacques Sarton
|
||||
|
||||
2008-04-23 Miklos Szeredi <miklos@szeredi.hu>
|
||||
|
||||
* Released 2.0
|
||||
|
||||
2008-04-23 Miklos Szeredi <miklos@szeredi.hu>
|
||||
|
||||
* Add manual page. Written by Bartosz Fenski
|
||||
|
||||
2008-04-22 Miklos Szeredi <miklos@szeredi.hu>
|
||||
|
||||
* Add missing ssh options: ControlMaster, ControlPath,
|
||||
KbdInteractiveAuthentication, KbdInteractiveDevices, LocalCommand,
|
||||
RekeyLimit (Debian bug #430225).
|
||||
|
||||
* Allow the '-ossh_command=CMD' command to contain parameters.
|
||||
Escape charater is backslash.
|
||||
|
||||
* Limit write requests to 64kB.
|
||||
|
||||
* Support "statvfs@openssh.com" extension, which will be available
|
||||
in OpenSSH 5.1.
|
||||
|
||||
2008-04-21 Miklos Szeredi <miklos@szeredi.hu>
|
||||
|
||||
* Fix incorrect disk usage reported by 'du' for files of size 4GB
|
||||
or above. Reported by Christian Boltz.
|
||||
|
||||
2008-04-16 Miklos Szeredi <miklos@szeredi.hu>
|
||||
|
||||
* If debugging is enabled, print some statistics at exit about the
|
||||
number of bytes transferred, etc..
|
||||
|
||||
2008-03-31 Miklos Szeredi <miklos@szeredi.hu>
|
||||
|
||||
* Support "posix-rename@openssh.com" extension available in
|
||||
OpenSSH 4.9. This allows rename to be atomic even when target
|
||||
file or directory exists. If available, the extension will be
|
||||
used instead of the rename operation in the original protocol and
|
||||
the "-oworkaround=rename" option will be ignored.
|
||||
|
||||
2008-03-28 Miklos Szeredi <miklos@szeredi.hu>
|
||||
|
||||
* Add support for password authentication with pam_mount.
|
||||
Original patch and help with testing: John S. Skogtvedt
|
||||
|
||||
2008-03-03 Miklos Szeredi <miklos@szeredi.hu>
|
||||
|
||||
* Fix ssh debug only appearing if "-d" is used. Reported by
|
||||
Michael Gorbach
|
||||
|
||||
2008-01-03 Miklos Szeredi <miklos@szeredi.hu>
|
||||
|
||||
* Fix condition for building of sshnodelay.so
|
||||
|
||||
2007-12-17 Miklos Szeredi <miklos@szeredi.hu>
|
||||
|
||||
* Released 1.9
|
||||
|
||||
2007-12-12 Miklos Szeredi <miklos@szeredi.hu>
|
||||
|
||||
* Fix checking for fuse_opt_parse in configure
|
||||
|
||||
2007-12-11 Miklos Szeredi <miklos@szeredi.hu>
|
||||
|
||||
* Fill in st_ctime attribute with st_mtime, instead of leaving it
|
||||
zero
|
||||
|
||||
* Check for OpenSSH version >= 4.4, and if found, don't build the
|
||||
sshnodelay.so workaround
|
||||
|
||||
2007-12-10 Miklos Szeredi <miklos@szeredi.hu>
|
||||
|
||||
* Fix crash on writing files, caused by missing locking around
|
||||
sshfs_file_get()
|
||||
|
||||
* Don't time requests when not debugging
|
||||
|
||||
* Add subtype support with libfuse >= 2.7.0
|
||||
|
||||
* Abort on allocation failure instead of exit
|
||||
|
||||
* Correctly show default of nodelaysrv workaround in help message
|
||||
|
||||
2007-05-16 Miklos Szeredi <miklos@szeredi.hu>
|
||||
|
||||
* Released 1.8
|
||||
|
||||
2007-05-15 Miklos Szeredi <miklos@szeredi.hu>
|
||||
|
||||
* Add needed g_thread_init() to fix rare crashes. Reported by
|
||||
Dimitrios Apostolou
|
||||
|
||||
* Fix memory leak in sshfs_open_common()
|
||||
|
||||
2007-04-18 Miklos Szeredi <miklos@szeredi.hu>
|
||||
|
||||
* Fix crash within gdb, caused by sem_wait() returning with an
|
||||
error on interrupt. Reported by Dimitrios Apostolou
|
||||
|
||||
* Fix spurious cache entries remaining after renaming a directory
|
||||
|
||||
2007-02-28 Miklos Szeredi <miklos@szeredi.hu>
|
||||
|
||||
* Don't set DISPLAY environment variable to "", because it breaks
|
||||
ssh-askpass. Make nodelaysrv_workaround default to off, because
|
||||
with this change it may have security implications.
|
||||
|
||||
2007-02-19 Miklos Szeredi <miklos@szeredi.hu>
|
||||
|
||||
* OpenSSH sftp-server can read requests faster, than it processes
|
||||
them, when it's buffer is full it aborts. This can happen on a
|
||||
large upload to a slow server. Work around this by limiting the
|
||||
total size of outstanding reqests. Debian bug #365541. Tracked
|
||||
down by Thue Janus Kristensen
|
||||
|
||||
* Add --disable-sshnodelay configure option. The sshnodelay.so
|
||||
hack shouldnt be needed with OpenSSH client versions >= 4.3
|
||||
|
||||
2006-12-20 Miklos Szeredi <miklos@szeredi.hu>
|
||||
|
||||
* Work around write performace issues due to missing TCP_NODELAY
|
||||
in sshd. Reported by Justin Searle
|
||||
|
||||
2006-11-10 Miklos Szeredi <miklos@szeredi.hu>
|
||||
|
||||
* Fix bug which ommitted directory entries for symlinks with the
|
||||
-ofollow_symlinks option. Bug reported by Mikael Ståldal
|
||||
|
||||
2006-09-29 Miklos Szeredi <miklos@szeredi.hu>
|
||||
|
||||
* Fix segfault if there are outstanding writes to the server after
|
||||
release on the file descriptor. This only happened on FreeBSD.
|
||||
Reported by Andriy Gapon
|
||||
|
||||
2006-08-18 Miklos Szeredi <miklos@szeredi.hu>
|
||||
|
||||
* Released 1.7
|
||||
|
||||
2006-08-17 Miklos Szeredi <miklos@szeredi.hu>
|
||||
|
||||
* Cosmetics on bogus statfs numbers
|
||||
|
||||
2006-08-16 Miklos Szeredi <miklos@szeredi.hu>
|
||||
|
||||
* Add option 'follow_symlinks' to resolve symlinks on the server.
|
||||
|
||||
* On setups where the login shell prints a banner, the sftp
|
||||
protocol was confused, and bailed out with "reply len too large:
|
||||
...". So iterate over any rubbish read immediately after login
|
||||
until a valid reply is found.
|
||||
|
||||
* Check remote directory for existence before mounting. Closes
|
||||
Ubuntu bug #46633
|
||||
|
||||
2006-03-10 Miklos Szeredi <miklos@szeredi.hu>
|
||||
|
||||
* Use socketpair() instead of pipe() for communication between ssh
|
||||
and sshfs. Patch from Csaba Henk
|
||||
|
||||
* Update to FUSE interface version 26
|
||||
|
||||
2006-03-09 Miklos Szeredi <miklos@szeredi.hu>
|
||||
|
||||
* Released 1.6
|
||||
|
||||
2006-03-09 Miklos Szeredi <miklos@szeredi.hu>
|
||||
|
||||
* Fix segfault if remote host is down and reconnection is enabled
|
||||
|
||||
2006-03-08 Miklos Szeredi <miklos@szeredi.hu>
|
||||
|
||||
* Fix bug in symlink transformation. Reported by Ralf Hoffmann
|
||||
|
||||
2006-02-24 Miklos Szeredi <miklos@szeredi.hu>
|
||||
|
||||
* Add workaround for broken truncate on old sftp servers. Can be
|
||||
enabled with '-oworkaround=truncate'. Patch from Joseph M Link
|
||||
|
||||
2006-02-23 Miklos Szeredi <miklos@szeredi.hu>
|
||||
|
||||
* Avoid double memcpy on writes. Patch by Joseph M Link
|
||||
|
||||
* More memory copy avoidance
|
||||
|
||||
2006-02-22 Miklos Szeredi <miklos@szeredi.hu>
|
||||
|
||||
* Add -fPIC to the comile flags of sshnodelay.so. Reported by
|
||||
Anthony Kolasny
|
||||
|
||||
2006-02-20 Miklos Szeredi <miklos@szeredi.hu>
|
||||
|
||||
* Released 1.5
|
||||
|
||||
2006-02-19 Miklos Szeredi <miklos@szeredi.hu>
|
||||
|
||||
* Fix compilation with old FUSE versions. Report by Kurt George
|
||||
Gjerde
|
||||
|
||||
2006-02-16 Miklos Szeredi <miklos@szeredi.hu>
|
||||
|
||||
* Block TERM/INT/HUP/QUIT signals in sshfs reading thread, so they
|
||||
will always be received by the FUSE main thread. Fixes the
|
||||
"double ^C" problem seen on FreeBSD.
|
||||
|
||||
* Use 'auto_cache' option if available, so that file cache is not
|
||||
thrown away on each open. This should make repeated reading of a
|
||||
file much much faster.
|
||||
|
||||
2006-01-31 Miklos Szeredi <miklos@szeredi.hu>
|
||||
|
||||
* Fix problems with nodelay workaround on FreeBSD.
|
||||
|
||||
2006-01-30 Miklos Szeredi <miklos@szeredi.hu>
|
||||
|
||||
* Fix data consitency bug if readahead is enabled and writes are
|
||||
intermixed with reads. Solution is far from optimal, since it
|
||||
will prevent readahead in the above situation. If used with FUSE
|
||||
>= 2.6.0 with Linux-2.6.X, readahead will be done by the kernel,
|
||||
and hence there will be no performance penalty. Bug reported and
|
||||
test program written by Wolfgang Köbler. Further testing on
|
||||
FreeBSD by Csaba Henk
|
||||
|
||||
2006-01-29 Miklos Szeredi <miklos@szeredi.hu>
|
||||
|
||||
* Add '-olarge_read' option for Linux-2.4.*. This should
|
||||
generally improve download performance
|
||||
|
||||
2006-01-27 Miklos Szeredi <miklos@szeredi.hu>
|
||||
|
||||
* Add workaround (enabled by default) for ssh clients not setting
|
||||
TCP_NODELAY on the network connection. Currently this is all
|
||||
known versions of openssh. This may improve download speed in
|
||||
some circumstances
|
||||
|
||||
* Make it possible to idividually disable workarounds with a "no"
|
||||
prefix
|
||||
|
||||
* Change '-otransform_symlinks' not to prefix with the mountpoint
|
||||
(which is fragile wrt. moving/binding the mount). Rather convert
|
||||
absolute symlinks to relative if possible. Does not yet work if
|
||||
base path is itself relative
|
||||
|
||||
2006-01-25 Miklos Szeredi <miklos@szeredi.hu>
|
||||
|
||||
* Use TCP_NODELAY socket option for direct connection. This may
|
||||
improve download speed in some circumstances
|
||||
|
||||
2006-01-20 Miklos Szeredi <miklos@szeredi.hu>
|
||||
|
||||
* Update to fuse API 2.6
|
||||
|
||||
* Don't do readahead in sshfs if it's done in kernel
|
||||
|
||||
2006-01-14 Miklos Szeredi <miklos@szeredi.hu>
|
||||
|
||||
* Released 1.4
|
||||
|
||||
2006-01-09 Miklos Szeredi <miklos@szeredi.hu>
|
||||
|
||||
* Added 'transform_symlinks' option to "fix-up" absolute symlinks.
|
||||
Patch by Paul Jarc
|
||||
|
||||
* Add option parsing implementation, so linking with older than
|
||||
2.5.0 libfuse still works.
|
||||
|
||||
2005-12-09 Miklos Szeredi <miklos@szeredi.hu>
|
||||
|
||||
* Use new option parsing interface of FUSE
|
||||
|
||||
2005-11-28 Miklos Szeredi <miklos@szeredi.hu>
|
||||
|
||||
* Set statvfs::f_frsize
|
||||
|
||||
2005-11-23 Miklos Szeredi <miklos@szeredi.hu>
|
||||
|
||||
* Fix warnings on 64bit systems. Reported by D. R. Evans
|
||||
|
||||
2005-11-16 Miklos Szeredi <miklos@szeredi.hu>
|
||||
|
||||
* Replace EPROTO with the more portable EIO
|
||||
|
||||
* Fix bug in option parsing. Reported by Csaba Henk
|
||||
|
||||
2005-10-29 Miklos Szeredi <miklos@szeredi.hu>
|
||||
|
||||
* Use FUSE version 25 if available
|
||||
|
||||
* Add <sys/socket.h> include. Reported by Csaba Henk
|
||||
|
||||
2005-10-29 Miklos Szeredi <miklos@szeredi.hu>
|
||||
|
||||
* Released 1.3
|
||||
|
||||
2005-10-28 Miklos Szeredi <miklos@szeredi.hu>
|
||||
|
||||
* Add atomic create+open and ftruncate operation. This should fix
|
||||
issues with 'cp' and other programs failing with "Permission
|
||||
denied". To be effective, needs FUSE version 2.5 and kernel
|
||||
version 2.6.15 (just a guess, since neither of them is released
|
||||
yet).
|
||||
|
||||
2005-10-27 Miklos Szeredi <miklos@szeredi.hu>
|
||||
|
||||
* Add support for SSH protocol version 1. Bug reported by Miklos
|
||||
Bagi Jr.
|
||||
|
||||
2005-10-26 Miklos Szeredi <miklos@szeredi.hu>
|
||||
|
||||
* Fix typo (ConnectTimeout -> ConnectionTimeout) in ssh options.
|
||||
Bug reported by Miklos Bagi Jr.
|
||||
|
||||
2005-10-19 Miklos Szeredi <miklos@szeredi.hu>
|
||||
|
||||
* GNOME Nautilus fails to copy file to sshfs filesystem, because
|
||||
FUSE returns zero free space. So instead return huge (999999999
|
||||
kbytes) amount of free space, yet it should be obvious that the
|
||||
number is artificial. Bug report by Peter Kronheimer
|
||||
|
||||
2005-10-18 Miklos Szeredi <miklos@szeredi.hu>
|
||||
|
||||
* Add remote uid detection and translation ('idmap=user' option).
|
||||
Idea and implementation details worked out by Jean-Marc Valin
|
||||
|
||||
2005-10-17 Miklos Szeredi <miklos@szeredi.hu>
|
||||
|
||||
* Add one more missing lock.
|
||||
|
||||
* Add workaround for failure to rename to an existing file. Based
|
||||
on patch by Michael Best
|
||||
|
||||
2005-10-15 Miklos Szeredi <miklos@szeredi.hu>
|
||||
|
||||
* Protect request ID allocation with mutex. Bug report by Tvrtko
|
||||
Ursulin
|
||||
|
||||
2005-08-17 Miklos Szeredi <miklos@szeredi.hu>
|
||||
|
||||
* Try to calculate approximate disk usage of files from their
|
||||
size, so that 'du' returns meaningful results. Problem reported
|
||||
by Bernd Amend.
|
||||
|
||||
2005-08-15 Miklos Szeredi <miklos@szeredi.hu>
|
||||
|
||||
* Released 1.2
|
||||
|
||||
2005-08-13 Miklos Szeredi <miklos@szeredi.hu>
|
||||
|
||||
* Add 'reconnect' option, which tries to reconnect to the server
|
||||
when the connection is broken. If a password is required for
|
||||
connection, it is recommended that you install ssh-askpass, and
|
||||
set the SSH_ASKPASS environment variable (see 'man ssh' for more
|
||||
details).
|
||||
|
||||
2005-05-05 Miklos Szeredi <miklos@szeredi.hu>
|
||||
|
||||
* Work around missing truncate() support in some older sftp
|
||||
servers (only works for zero size truncate). Thanks to Eduard
|
||||
Czimbalmos for the bug report and help with testing
|
||||
|
||||
2005-04-13 Miklos Szeredi <miklos@szeredi.hu>
|
||||
|
||||
* Fix compilation with gcc-2.95. Reported by David A. Gershman
|
||||
|
||||
2005-03-08 Miklos Szeredi <miklos@szeredi.hu>
|
||||
|
||||
* Make it work on server version 2 (e.g. Sun_SSH_1.0.1). Report
|
||||
and testing by Pieter J. Kersten
|
||||
|
||||
2005-03-04 Miklos Szeredi <miklos@szeredi.hu>
|
||||
|
||||
* Released 1.1
|
||||
|
||||
2005-03-03 Miklos Szeredi <miklos@szeredi.hu>
|
||||
|
||||
* Slightly optimize readahead. Still not clever enough to always
|
||||
keep the pipe filled.
|
||||
|
||||
* Add 'sshfs_debug' option
|
||||
|
||||
2005-02-17 Miklos Szeredi <miklos@szeredi.hu>
|
||||
|
||||
* Parse 'max_read' mount option and if smaller than 65536 forward
|
||||
to FUSE
|
||||
|
||||
2005-02-16 Miklos Szeredi <miklos@szeredi.hu>
|
||||
|
||||
* Added simple readahead (big performance gain in case of
|
||||
sequential read pattern). Can be disabled with '-o no_readahead'
|
||||
|
||||
2005-02-14 Miklos Szeredi <miklos@szeredi.hu>
|
||||
|
||||
* Added asynchronous writeback (big performance gain) and made
|
||||
this the default. Can be disabled with '-o sshfs_sync'
|
||||
|
||||
2005-02-09 Miklos Szeredi <miklos@szeredi.hu>
|
||||
|
||||
* Added option to start arbitary command instead of 'ssh'
|
||||
|
||||
* Re-added '-p PORT' as a convenience option, also '-C' works as
|
||||
in ssh.
|
||||
|
||||
2005-02-08 Miklos Szeredi <miklos@szeredi.hu>
|
||||
|
||||
* Add caching of symlinks
|
||||
|
||||
* Add support for many ssh options to be passed to ssh
|
||||
|
||||
* Port number can now actually be specified with "-o port=PORT",
|
||||
bug spotted by Andrew Ukrainec
|
||||
|
||||
2005-02-07 Miklos Szeredi <miklos@szeredi.hu>
|
||||
|
||||
* Separate attribute caching to a separate layer
|
||||
|
||||
* Add caching of directory contents
|
||||
|
||||
2005-02-03 Miklos Szeredi <miklos@szeredi.hu>
|
||||
|
||||
Fix PKG_CONFIG_PATH setting in configure.ac (reported by Alpar
|
||||
Juttner)
|
||||
|
||||
2005-01-09 Miklos Szeredi <miklos@szeredi.hu>
|
||||
|
||||
* Released 1.0
|
||||
|
||||
2004-12-04 Miklos Szeredi <miklos@szeredi.hu>
|
||||
|
||||
* Started ChangeLog
|
||||
* Initial release
|
||||
|
||||
+1
-1
@@ -11,7 +11,7 @@ sshfs_LDADD = $(SSHFS_LIBS)
|
||||
sshfs_CFLAGS = $(SSHFS_CFLAGS)
|
||||
sshfs_CPPFLAGS = -D_REENTRANT -DFUSE_USE_VERSION=26 -DLIBDIR=\"$(libdir)\"
|
||||
|
||||
EXTRA_DIST = sshnodelay.c FAQ.txt
|
||||
EXTRA_DIST = sshnodelay.c
|
||||
CLEANFILES = sshnodelay.so
|
||||
|
||||
dist_man_MANS = sshfs.1
|
||||
|
||||
@@ -1,112 +0,0 @@
|
||||
What is new in 2.1, 2.2 and 2.3
|
||||
-------------------------------
|
||||
|
||||
* Support hard link creation if server is OpenSSH 5.7 or later
|
||||
|
||||
* Check mount point and options before connecting to ssh server
|
||||
|
||||
* Handle commas in usernames
|
||||
|
||||
* Small improvements and bug fixes
|
||||
|
||||
|
||||
What is new in 2.0
|
||||
------------------
|
||||
|
||||
* Support password authentication with pam_mount
|
||||
|
||||
* Support atomic renames if server is OpenSSH 4.9 or later
|
||||
|
||||
* Support getting disk usage if server is OpenSSH 5.1 or later
|
||||
|
||||
* Small enhancements and bug fixes
|
||||
|
||||
What is new in 1.9
|
||||
------------------
|
||||
|
||||
* Fix a serious bug, that could result in sshfs hanging, crashing, or
|
||||
reporting out-of-memory
|
||||
|
||||
What is new in 1.8
|
||||
------------------
|
||||
|
||||
* Bug fixes
|
||||
|
||||
What is new in 1.7
|
||||
------------------
|
||||
|
||||
* Tolerate servers which print a banner on login
|
||||
|
||||
* Small improvements
|
||||
|
||||
What is new in 1.6
|
||||
------------------
|
||||
|
||||
* Workaround for missing truncate operation on old sftp servers
|
||||
|
||||
* Bug fixes
|
||||
|
||||
What is new in 1.5
|
||||
------------------
|
||||
|
||||
* Improvements to read performance. Now both read and write
|
||||
throughput should be very close to 'scp'
|
||||
|
||||
* If used with FUSE 2.6.0 or later, then perform better data caching.
|
||||
This should show dramatic speed improvements when a file is opened
|
||||
more than once
|
||||
|
||||
* Bug fixes
|
||||
|
||||
What is new in 1.4
|
||||
------------------
|
||||
|
||||
* Updated to version 25 of libfuse API
|
||||
|
||||
* This means that the 'cp' of readonly file to sshfs bug is finally
|
||||
solved (as long as using libfuse 2.5.0 or later *and* Linux 2.6.15
|
||||
or later)
|
||||
|
||||
* Sshfs now works on FreeBSD
|
||||
|
||||
* Added option to "transform" absolute symbolic links
|
||||
|
||||
What is new in 1.3
|
||||
------------------
|
||||
|
||||
* Add workaround for failure to rename to an existing file
|
||||
|
||||
* Simple user ID mapping
|
||||
|
||||
* Estimate disk usage of files based on size
|
||||
|
||||
* Report "infinite" disk space
|
||||
|
||||
* Bug fixes
|
||||
|
||||
What is new in 1.2
|
||||
------------------
|
||||
|
||||
* Better compatibility with different sftp servers
|
||||
|
||||
* Automatic reconnect (optional)
|
||||
|
||||
What is new in 1.1
|
||||
------------------
|
||||
|
||||
* Performance improvements:
|
||||
|
||||
- directory content caching
|
||||
|
||||
- symlink caching
|
||||
|
||||
- asynchronous writeback
|
||||
|
||||
- readahead
|
||||
|
||||
* Fixed '-p' option
|
||||
|
||||
What is new in 1.0
|
||||
------------------
|
||||
|
||||
* Initial release
|
||||
+11
-13
@@ -26,8 +26,7 @@ Latest version
|
||||
==============
|
||||
|
||||
The latest version and more information can be found on
|
||||
|
||||
http://fuse.sourceforge.net/sshfs.html
|
||||
http://github.com/libfuse/sshfs
|
||||
|
||||
|
||||
How to mount a filesystem
|
||||
@@ -35,7 +34,7 @@ How to mount a filesystem
|
||||
|
||||
Once sshfs is installed (see next section) running it is very simple:
|
||||
|
||||
sshfs hostname: mountpoint
|
||||
sshfs hostname: mountpoint
|
||||
|
||||
Note, that it's recommended to run it as user, not as root. For this
|
||||
to work the mountpoint must be owned by the user. If the username is
|
||||
@@ -47,28 +46,27 @@ is the home directory.
|
||||
|
||||
Also many ssh options can be specified (see the manual pages for
|
||||
sftp(1) and ssh_config(5)), including the remote port number
|
||||
('-oport=PORT')
|
||||
(`-oport=PORT`)
|
||||
|
||||
To unmount the filesystem:
|
||||
|
||||
fusermount -u moutpoint
|
||||
fusermount -u moutpoint
|
||||
|
||||
|
||||
Installing
|
||||
==========
|
||||
|
||||
First you need to download FUSE 2.2 or later from:
|
||||
|
||||
http://fuse.sourceforge.net
|
||||
First you need to download FUSE 2.2 or later from
|
||||
http://github.com/libfuse/libfuse.
|
||||
|
||||
You also need to install the devel package for glib2.0. After
|
||||
installing FUSE, compile sshfs the usual way:
|
||||
|
||||
./configure
|
||||
make
|
||||
make install (as root)
|
||||
./configure
|
||||
make
|
||||
make install (as root)
|
||||
|
||||
And you are ready to go.
|
||||
|
||||
If checking out from CVS for the first time also do 'autoreconf -i'
|
||||
before doing './configure'.
|
||||
If checking out from git for the first time also do `autoreconf -i`
|
||||
before doing `./configure`.
|
||||
@@ -490,6 +490,7 @@ static void cache_unity_fill(struct fuse_cache_operations *oper,
|
||||
cache_oper->init = oper->oper.init;
|
||||
#endif
|
||||
cache_oper->getattr = oper->oper.getattr;
|
||||
cache_oper->access = oper->oper.access;
|
||||
cache_oper->readlink = oper->oper.readlink;
|
||||
cache_oper->getdir = cache_unity_getdir;
|
||||
cache_oper->mknod = oper->oper.mknod;
|
||||
|
||||
+2
-2
@@ -1,5 +1,5 @@
|
||||
AC_INIT(sshfs-fuse, 2.4)
|
||||
AM_INIT_AUTOMAKE
|
||||
AC_INIT(sshfs, 2.6)
|
||||
AM_INIT_AUTOMAKE([foreign subdir-objects])
|
||||
AM_CONFIG_HEADER(config.h)
|
||||
|
||||
AC_PROG_CC
|
||||
|
||||
@@ -1,11 +0,0 @@
|
||||
#! /bin/bash
|
||||
|
||||
(
|
||||
echo "See http://fuse.sourceforge.net/wiki/index.php/SshfsFaq for the latest"
|
||||
echo "version of this FAQ"
|
||||
echo "---"
|
||||
echo
|
||||
|
||||
lynx -nolist -dump http://fuse.sourceforge.net/wiki/index.php/SshfsFaq \
|
||||
| sed -e '1,12d' -e '/____/,$d'
|
||||
) > FAQ.txt
|
||||
@@ -58,6 +58,9 @@ synchronous writes
|
||||
\fB\-o\fR no_readahead
|
||||
synchronous reads (no speculative readahead)
|
||||
.TP
|
||||
\fB\-o\fR sync_readdir
|
||||
synchronous readdir
|
||||
.TP
|
||||
\fB\-o\fR sshfs_debug
|
||||
print some debugging information
|
||||
.TP
|
||||
@@ -138,9 +141,15 @@ path to sftp server or subsystem (default: sftp)
|
||||
.TP
|
||||
\fB\-o\fR directport=PORT
|
||||
directly connect to PORT bypassing ssh
|
||||
.TP
|
||||
\fB\-o\fR slave
|
||||
communicate over stdin and stdout bypassing network
|
||||
.TP
|
||||
\fB\-o\fR disable_hardlink
|
||||
link(2) will return with errno set to ENOSYS. Hard links don't currently work
|
||||
perfectly on sshfs, and this confuses some programs. If that happens try
|
||||
disabling hard links with this option.
|
||||
.TP
|
||||
\fB\-o\fR transform_symlinks
|
||||
transform absolute symlinks to relative
|
||||
.TP
|
||||
@@ -256,7 +265,7 @@ perform reads synchronously
|
||||
\fB\-o\fR subdir=DIR
|
||||
prepend this directory to all paths (mandatory)
|
||||
.TP
|
||||
\fB\-o\fR [no]rellinksa
|
||||
\fB\-o\fR [no]rellinks
|
||||
transform absolute symlinks to relative
|
||||
.TP
|
||||
[iconv]
|
||||
|
||||
@@ -121,6 +121,12 @@
|
||||
|
||||
#define SSHNODELAY_SO "sshnodelay.so"
|
||||
|
||||
/* Asynchronous readdir parameters */
|
||||
#define READDIR_START 2
|
||||
#define READDIR_MAX 32
|
||||
|
||||
#define MAX_PASSWORD 1024
|
||||
|
||||
struct buffer {
|
||||
uint8_t *p;
|
||||
size_t len;
|
||||
@@ -139,6 +145,7 @@ struct request {
|
||||
unsigned int want_reply;
|
||||
sem_t ready;
|
||||
uint8_t reply_type;
|
||||
uint32_t id;
|
||||
int replied;
|
||||
int error;
|
||||
struct buffer reply;
|
||||
@@ -203,6 +210,7 @@ struct sshfs {
|
||||
int detect_uid;
|
||||
int idmap;
|
||||
int nomap;
|
||||
int disable_hardlink;
|
||||
char *uid_file;
|
||||
char *gid_file;
|
||||
GHashTable *uid_map;
|
||||
@@ -214,6 +222,7 @@ struct sshfs {
|
||||
unsigned ssh_ver;
|
||||
int sync_write;
|
||||
int sync_read;
|
||||
int sync_readdir;
|
||||
int debug;
|
||||
int foreground;
|
||||
int reconnect;
|
||||
@@ -247,6 +256,7 @@ struct sshfs {
|
||||
int ext_statvfs;
|
||||
int ext_hardlink;
|
||||
mode_t mnt_mode;
|
||||
struct fuse_operations *op;
|
||||
|
||||
/* statistics */
|
||||
uint64_t bytes_sent;
|
||||
@@ -350,6 +360,7 @@ static struct fuse_opt sshfs_opts[] = {
|
||||
SSHFS_OPT("nomap=error", nomap, NOMAP_ERROR),
|
||||
SSHFS_OPT("sshfs_sync", sync_write, 1),
|
||||
SSHFS_OPT("no_readahead", sync_read, 1),
|
||||
SSHFS_OPT("sync_readdir", sync_readdir, 1),
|
||||
SSHFS_OPT("sshfs_debug", debug, 1),
|
||||
SSHFS_OPT("reconnect", reconnect, 1),
|
||||
SSHFS_OPT("transform_symlinks", transform_symlinks, 1),
|
||||
@@ -358,6 +369,7 @@ static struct fuse_opt sshfs_opts[] = {
|
||||
SSHFS_OPT("password_stdin", password_stdin, 1),
|
||||
SSHFS_OPT("delay_connect", delay_connect, 1),
|
||||
SSHFS_OPT("slave", slave, 1),
|
||||
SSHFS_OPT("disable_hardlink", disable_hardlink, 1),
|
||||
|
||||
FUSE_OPT_KEY("-p ", KEY_PORT),
|
||||
FUSE_OPT_KEY("-C", KEY_COMPRESS),
|
||||
@@ -1620,7 +1632,7 @@ static int sftp_check_root(const char *base_path)
|
||||
buf_init(&buf, 0);
|
||||
buf_add_string(&buf, remote_dir);
|
||||
buf_to_iov(&buf, &iov[0]);
|
||||
if (sftp_send_iov(SSH_FXP_STAT, id, iov, 1) == -1)
|
||||
if (sftp_send_iov(SSH_FXP_LSTAT, id, iov, 1) == -1)
|
||||
goto out;
|
||||
buf_clear(&buf);
|
||||
if (sftp_read(&type, &buf) == -1)
|
||||
@@ -1790,6 +1802,13 @@ static int sftp_request_wait(struct request *req, uint8_t type,
|
||||
err = -EIO;
|
||||
break;
|
||||
|
||||
case SSH_FX_FAILURE:
|
||||
if (type == SSH_FXP_RMDIR)
|
||||
err = -ENOTEMPTY;
|
||||
else
|
||||
err = -EPERM;
|
||||
break;
|
||||
|
||||
default:
|
||||
err = -sftp_error_to_errno(serr);
|
||||
}
|
||||
@@ -1827,6 +1846,7 @@ static int sftp_request_send(uint8_t type, struct iovec *iov, size_t count,
|
||||
if (begin_func)
|
||||
begin_func(req);
|
||||
id = sftp_get_id();
|
||||
req->id = id;
|
||||
err = start_processing_thread();
|
||||
if (err) {
|
||||
pthread_mutex_unlock(&sshfs.lock);
|
||||
@@ -1915,6 +1935,22 @@ static int sshfs_getattr(const char *path, struct stat *stbuf)
|
||||
return err;
|
||||
}
|
||||
|
||||
static int sshfs_access(const char *path, int mask)
|
||||
{
|
||||
struct stat stbuf;
|
||||
int err = 0;
|
||||
|
||||
if (mask & X_OK) {
|
||||
err = sshfs.op->getattr(path, &stbuf);
|
||||
if (!err) {
|
||||
if (S_ISREG(stbuf.st_mode) &&
|
||||
!(stbuf.st_mode & (S_IXUSR|S_IXGRP|S_IXOTH)))
|
||||
err = -EACCES;
|
||||
}
|
||||
}
|
||||
return err;
|
||||
}
|
||||
|
||||
static int count_components(const char *p)
|
||||
{
|
||||
int ctr;
|
||||
@@ -2014,6 +2050,113 @@ static int sshfs_readlink(const char *path, char *linkbuf, size_t size)
|
||||
return err;
|
||||
}
|
||||
|
||||
static int sftp_readdir_send(struct request **req, struct buffer *handle)
|
||||
{
|
||||
struct iovec iov;
|
||||
|
||||
buf_to_iov(handle, &iov);
|
||||
return sftp_request_send(SSH_FXP_READDIR, &iov, 1, NULL, NULL,
|
||||
SSH_FXP_NAME, NULL, req);
|
||||
}
|
||||
|
||||
static int sshfs_req_pending(struct request *req)
|
||||
{
|
||||
if (g_hash_table_lookup(sshfs.reqtab, GUINT_TO_POINTER(req->id)))
|
||||
return 1;
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int sftp_readdir_async(struct buffer *handle, fuse_cache_dirh_t h,
|
||||
fuse_cache_dirfil_t filler)
|
||||
{
|
||||
int err = 0;
|
||||
int outstanding = 0;
|
||||
int max = READDIR_START;
|
||||
GList *list = NULL;
|
||||
|
||||
int done = 0;
|
||||
|
||||
while (!done || outstanding) {
|
||||
struct request *req;
|
||||
struct buffer name;
|
||||
int tmperr;
|
||||
|
||||
while (!done && outstanding < max) {
|
||||
tmperr = sftp_readdir_send(&req, handle);
|
||||
|
||||
if (tmperr && !done) {
|
||||
err = tmperr;
|
||||
done = 1;
|
||||
break;
|
||||
}
|
||||
|
||||
list = g_list_append(list, req);
|
||||
outstanding++;
|
||||
}
|
||||
|
||||
if (outstanding) {
|
||||
GList *first;
|
||||
/* wait for response to next request */
|
||||
first = g_list_first(list);
|
||||
req = first->data;
|
||||
list = g_list_delete_link(list, first);
|
||||
outstanding--;
|
||||
|
||||
if (done) {
|
||||
pthread_mutex_lock(&sshfs.lock);
|
||||
if (sshfs_req_pending(req))
|
||||
req->want_reply = 0;
|
||||
pthread_mutex_unlock(&sshfs.lock);
|
||||
if (!req->want_reply)
|
||||
continue;
|
||||
}
|
||||
|
||||
tmperr = sftp_request_wait(req, SSH_FXP_READDIR,
|
||||
SSH_FXP_NAME, &name);
|
||||
|
||||
if (tmperr && !done) {
|
||||
err = tmperr;
|
||||
if (err == MY_EOF)
|
||||
err = 0;
|
||||
done = 1;
|
||||
}
|
||||
if (!done) {
|
||||
err = buf_get_entries(&name, h, filler);
|
||||
buf_free(&name);
|
||||
|
||||
/* increase number of outstanding requests */
|
||||
if (max < READDIR_MAX)
|
||||
max++;
|
||||
|
||||
if (err)
|
||||
done = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
assert(list == NULL);
|
||||
|
||||
return err;
|
||||
}
|
||||
|
||||
static int sftp_readdir_sync(struct buffer *handle, fuse_cache_dirh_t h,
|
||||
fuse_cache_dirfil_t filler)
|
||||
{
|
||||
int err;
|
||||
do {
|
||||
struct buffer name;
|
||||
err = sftp_request(SSH_FXP_READDIR, handle, SSH_FXP_NAME, &name);
|
||||
if (!err) {
|
||||
err = buf_get_entries(&name, h, filler);
|
||||
buf_free(&name);
|
||||
}
|
||||
} while (!err);
|
||||
if (err == MY_EOF)
|
||||
err = 0;
|
||||
|
||||
return err;
|
||||
}
|
||||
|
||||
static int sshfs_getdir(const char *path, fuse_cache_dirh_t h,
|
||||
fuse_cache_dirfil_t filler)
|
||||
{
|
||||
@@ -2026,16 +2169,11 @@ static int sshfs_getdir(const char *path, fuse_cache_dirh_t h,
|
||||
if (!err) {
|
||||
int err2;
|
||||
buf_finish(&handle);
|
||||
do {
|
||||
struct buffer name;
|
||||
err = sftp_request(SSH_FXP_READDIR, &handle, SSH_FXP_NAME, &name);
|
||||
if (!err) {
|
||||
err = buf_get_entries(&name, h, filler);
|
||||
buf_free(&name);
|
||||
}
|
||||
} while (!err);
|
||||
if (err == MY_EOF)
|
||||
err = 0;
|
||||
|
||||
if (sshfs.sync_readdir)
|
||||
err = sftp_readdir_sync(&handle, h, filler);
|
||||
else
|
||||
err = sftp_readdir_async(&handle, h, filler);
|
||||
|
||||
err2 = sftp_request(SSH_FXP_CLOSE, &handle, 0, NULL);
|
||||
if (!err)
|
||||
@@ -2192,7 +2330,7 @@ static int sshfs_link(const char *from, const char *to)
|
||||
{
|
||||
int err = -ENOSYS;
|
||||
|
||||
if (sshfs.ext_hardlink) {
|
||||
if (sshfs.ext_hardlink && !sshfs.disable_hardlink) {
|
||||
struct buffer buf;
|
||||
|
||||
buf_init(&buf, 0);
|
||||
@@ -3115,6 +3253,7 @@ static struct fuse_cache_operations sshfs_oper = {
|
||||
.oper = {
|
||||
.init = sshfs_init,
|
||||
.getattr = sshfs_getattr,
|
||||
.access = sshfs_access,
|
||||
.readlink = sshfs_readlink,
|
||||
.mknod = sshfs_mknod,
|
||||
.mkdir = sshfs_mkdir,
|
||||
@@ -3162,6 +3301,7 @@ static void usage(const char *progname)
|
||||
" -o delay_connect delay connection to server\n"
|
||||
" -o sshfs_sync synchronous writes\n"
|
||||
" -o no_readahead synchronous reads (no speculative readahead)\n"
|
||||
" -o sync_readdir synchronous readdir\n"
|
||||
" -o sshfs_debug print some debugging information\n"
|
||||
" -o cache=BOOL enable caching {yes,no} (default: yes)\n"
|
||||
" -o cache_timeout=N sets timeout for caches in seconds (default: 20)\n"
|
||||
@@ -3190,6 +3330,7 @@ static void usage(const char *progname)
|
||||
" -o sftp_server=SERV path to sftp server or subsystem (default: sftp)\n"
|
||||
" -o directport=PORT directly connect to PORT bypassing ssh\n"
|
||||
" -o slave communicate over stdin and stdout bypassing network\n"
|
||||
" -o disable_hardlink link(2) will return with errno set to ENOSYS\n"
|
||||
" -o transform_symlinks transform absolute symlinks to relative\n"
|
||||
" -o follow_symlinks follow symlinks on the server\n"
|
||||
" -o no_check_root don't check for existence of 'dir' on server\n"
|
||||
@@ -3215,10 +3356,11 @@ static int is_ssh_opt(const char *arg)
|
||||
|
||||
static int sshfs_fuse_main(struct fuse_args *args)
|
||||
{
|
||||
sshfs.op = cache_init(&sshfs_oper);
|
||||
#if FUSE_VERSION >= 26
|
||||
return fuse_main(args->argc, args->argv, cache_init(&sshfs_oper), NULL);
|
||||
return fuse_main(args->argc, args->argv, sshfs.op, NULL);
|
||||
#else
|
||||
return fuse_main(args->argc, args->argv, cache_init(&sshfs_oper));
|
||||
return fuse_main(args->argc, args->argv, sshfs.op);
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -3342,7 +3484,7 @@ static void check_large_read(struct fuse_args *args)
|
||||
static int read_password(void)
|
||||
{
|
||||
int size = getpagesize();
|
||||
int max_password = 64;
|
||||
int max_password = MIN(MAX_PASSWORD, size - 1);
|
||||
int n;
|
||||
|
||||
sshfs.password = mmap(NULL, size, PROT_READ | PROT_WRITE,
|
||||
@@ -3856,13 +3998,18 @@ int main(int argc, char *argv[])
|
||||
if (res == -1)
|
||||
perror("WARNING: failed to set FD_CLOEXEC on fuse device");
|
||||
|
||||
fuse = fuse_new(ch, &args, cache_init(&sshfs_oper),
|
||||
sshfs.op = cache_init(&sshfs_oper);
|
||||
fuse = fuse_new(ch, &args, sshfs.op,
|
||||
sizeof(struct fuse_operations), NULL);
|
||||
if (fuse == NULL) {
|
||||
fuse_unmount(mountpoint, ch);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
/*
|
||||
* FIXME: trim $PATH so it doesn't contain anything inside the
|
||||
* mountpoint, which would deadlock.
|
||||
*/
|
||||
res = ssh_connect();
|
||||
if (res == -1) {
|
||||
fuse_unmount(mountpoint, ch);
|
||||
|
||||
Reference in New Issue
Block a user