Nick Craig-Wood
e5be471ce0
Use io.SeekStart/End/Current constants now for go1.7+ #2154
2018-04-07 11:42:36 +01:00
Nick Craig-Wood
80588a5a6b
Replace "golang.org/x/net/context" with "context" for go1.7+ #2154
2018-04-07 11:42:08 +01:00
Nick Craig-Wood
34c45a7c04
mount, cmount: remove addition of O_CREATE to flags on file open #2141
...
Previously this was adding it in to all file opens which was causing
inefficiencies under Windows where it stats the file using
open/fstat/close.
This change will make stat operations run much quicker under Windows
as they won't have to open the underlying file
This problem was introduced in61b6159a05336bd7ba105766de2d2ff171f7fb81
where we added O_CREATE to all file opens and creates.
2018-03-15 20:48:56 +00:00
Nick Craig-Wood
c1a3e363a6
mount: return ENOSYS rather than EIO on attempted link
...
This fixes FileZilla accessing an rclone mount served over sftp.
See: https://forum.rclone.org/t/moving-files-on-rclone-mount-with-filezilla/5029
2018-03-14 21:10:20 +00:00
Nick Craig-Wood
fc32fee4ad
mount, cmount: add --attr-timeout to control attribute caching in kernel
...
This flag allows the attribute caching in the kernel to be controlled.
The default is 0s - no caching - which is recommended for filesystems
which can change outside the control of the kernel.
Previously this was at the default meaning it was 60s for mount and 1s
for cmount. This showed strange effects when files changed on the
remote not via the kernel. For instance Caddy would serve corrupted
files for a while when serving from an rclone mount when a file
changed on the remote.
2018-03-04 11:20:22 +00:00
Nick Craig-Wood
54deb01f00
vfs: Make OpenFile and friends return EINVAL if O_RDONLY and O_TRUNC
...
Before this change Open("name", os.O_RDONLY|os.O_TRUNC) would have
truncated the file. This is what Linux does, but is counterintuitive.
POSIX states this is undefined, so return an error in this case
instead. This preserves the invariant O_RDONLY => file is not
changed.
2018-02-26 17:04:27 +00:00
Nick Craig-Wood
c277a4096c
mount: don't set modtime twice #2021
2018-01-29 20:49:13 +00:00
Nick Craig-Wood
a80d8a21dc
vfs: add flags parameter to Dir.Create
2018-01-19 13:18:40 +00:00
Nick Craig-Wood
11da2a6c9b
Break the fs package up into smaller parts.
...
The purpose of this is to make it easier to maintain and eventually to
allow the rclone backends to be re-used in other projects without
having to use the rclone configuration system.
The new code layout is documented in CONTRIBUTING.
2018-01-15 17:51:14 +00:00
Nick Craig-Wood
dc1c679c65
mount: support truncate properly
2017-11-20 19:42:35 +00:00
Nick Craig-Wood
b4083b4371
vfs: rename Fsync to Sync and implement Sync on Node and Handle
2017-11-20 12:46:23 +00:00
Nick Craig-Wood
61b6159a05
mount, cmount: add O_CREATE to Open calls since fuse doesn't seem to supply it
2017-11-20 12:46:22 +00:00
Nick Craig-Wood
c560017934
vfs: add Path method to Node and use it to stop reading nil DirEntry
...
All DirEntry calls now have been checked for nil or converted to use Path.
2017-11-20 12:46:22 +00:00
Nick Craig-Wood
57a5c67729
mounttest: run the tests for all 4 VFS cache modes
2017-11-20 12:46:21 +00:00
Nick Craig-Wood
8951875c21
vfs,mount,cmount,mountlib: allow flags to be overriden by environment variables
2017-11-20 12:46:21 +00:00
Nick Craig-Wood
3fb1e96988
vfs: factor Open logic from Dir.Create into vfs.OpenFile
2017-11-20 12:00:32 +00:00
Fabian Möller
d8b3bf014d
mount: use sdnotify to signal systemd the mount is ready
...
When the NOTIFY_SOCKET environment variable is set notify systemd after
the mount is ready.
2017-11-20 11:03:10 +00:00
Nick Craig-Wood
2083ac6e2a
vfs: add ECLOSED and tidy errors
2017-11-04 10:24:10 +00:00
Nick Craig-Wood
5634659ea3
mount,vfs: unify Read and Write handles in preparation for ReadWrite handles
2017-11-04 10:24:10 +00:00
Nick Craig-Wood
e18122e88b
vfs: add tests and subsequent fixes
...
* Tests for VFS layer
* Small fixes found during testing
* Fix Close, Flush and Release behaviour for ReadFileHandle and WriteFileHandle
* Fix nil object bugs on File
2017-11-04 10:24:10 +00:00
Nick Craig-Wood
07ec8073fe
mount: remove unused DirEntry struct
2017-11-03 13:00:00 +00:00
Nick Craig-Wood
8184ec4b70
vfs: add EPERM to errors
2017-11-03 13:00:00 +00:00
Nick Craig-Wood
190367d917
vfs: factor duplicated Open code into vfs from mount/cmount
2017-11-03 13:00:00 +00:00
Nick Craig-Wood
7e065440fb
vfs: rename Lookup to Stat to be more in keeping with os
2017-11-03 12:59:59 +00:00
Nick Craig-Wood
e8883e9fdb
vfs: factor flags into vfsflags and remove global variables
2017-11-03 12:59:59 +00:00
Nick Craig-Wood
1a8f824bad
vfs: use os package errors where possible
2017-11-03 12:59:59 +00:00
Nick Craig-Wood
c1aaff220d
Factor new vfs module out of cmd/mountlib
...
This is an OS style file system abstraction with directory caching
used in mount, cmount, serve webdav and serve http.
2017-11-03 12:59:59 +00:00
Nick Craig-Wood
ca19fd2d7e
mountlib: Make read/write file handles support more standard interfaces
...
Including Read, ReadAt, Seek, Close for read handles and Write,
WriteAt, Close for read handles.
2017-11-03 12:59:59 +00:00
Nick Craig-Wood
2fac74b517
mountlib: store only Node in *Dir removing DirEntry struct
2017-11-03 12:59:59 +00:00
Nick Craig-Wood
0bb84efe75
mountlib: Rename Remove to RemoveName
2017-11-03 12:59:59 +00:00
Nick Craig-Wood
750690503e
mountlib: make Node satisfy os.FileInfo interface
2017-11-03 12:59:58 +00:00
Nick Craig-Wood
e7d04fc103
Create fs.Directory interface and use it everywhere
2017-06-30 14:26:59 +01:00
Nick Craig-Wood
e2d7d413ef
fs: rename BasicInfo to DirEntry
2017-06-30 14:26:58 +01:00
Nick Craig-Wood
dcce65b2b3
mount/cmount: factor duplicated code into mountlib
2017-06-19 14:36:51 +01:00
Stefan Breunig
9782c264e9
hand dirCacheTime through again
2017-06-01 09:02:22 +01:00
Stefan Breunig
a2e3af0523
poll for Google Drive changes when mounted
2017-05-28 17:54:52 +01:00
Nick Craig-Wood
3dff91d691
mount: add missing build constraint to fix Windows build
2017-05-15 17:40:15 +01:00
Nick Craig-Wood
b259f8b752
cmount, mount, mountlib: make --read-only reject modify operations
...
Normally mount/cmount use `-o ro` to get the kernel to mark the fs as
read only. However this is ignored by WinFsp, so in addition if
`--read-only` is in effect then return EROFS ("Read only File System")
from all methods which attempt to modify something.
2017-05-15 16:56:47 +01:00
Nick Craig-Wood
115ac00222
mount, mountlib: move function tracing into mount
2017-05-15 16:56:45 +01:00
Nick Craig-Wood
bc9856b570
Forward port 930ff266f2
to cmount branch
...
compare checksums on upload/download via FUSE
2017-05-15 16:56:44 +01:00
Nick Craig-Wood
bcd87009e2
Fix docs typo
2017-05-15 16:56:44 +01:00
Nick Craig-Wood
e1516e0159
Forward port 58a82cd578
into cmount branch
...
allow the fuse directory cached to be cleaned manually
2017-05-15 16:56:43 +01:00
Nick Craig-Wood
268fe0004c
mount: factor filesystem code into mountlib and mounttest
2017-05-12 21:24:24 +01:00
Stefan Breunig
58a82cd578
allow the fuse directory cached to be cleaned manually ( fixes #803 )
2017-05-07 12:08:59 +01:00
Stefan Breunig
930ff266f2
compare checksums on upload/download via FUSE
2017-05-02 22:27:38 +01:00
Stefan Breunig
2fd86c93fc
allow modTime to be changed even before all writers are closed ( fixes #1197 -- again)
2017-03-31 01:28:08 +02:00
Stefan Breunig
4dc030d081
implement ModTime via FUSE for remotes that support it ( fixes #1197 )
2017-03-24 09:23:04 +01:00
Jérôme Vizcaino
788b6ce821
mount: umount dir when program ends with SIGINT (Ctrl+C) or SIGTERM
2017-03-18 21:24:05 +00:00
Nick Craig-Wood
1cc58e4e09
mount: fix logging for unimplemented file open modes #1195
2017-03-02 22:07:01 +00:00
Nick Craig-Wood
3ef9f6f016
mount: add test scripts
2017-02-17 11:37:19 +00:00
Nick Craig-Wood
033d1eb7af
Refactor Account interface
2017-02-17 09:15:24 +00:00
Nick Craig-Wood
928be0f1fd
mount: fix seek with buffering to use correct interface
...
Stop pre-cache before seeking which stops lots of excess data transfer
2017-02-17 08:55:24 +00:00
Nick Craig-Wood
ef604f6100
mount: implement renaming directories - fixes #954
...
This also fixes various caching issues renaming files.
2017-02-16 17:42:38 +00:00
Nick Craig-Wood
dac4bb22d3
mount: Make include and exclude filters apply to mount - fixes #1060
2017-02-15 23:28:53 +00:00
Nick Craig-Wood
9a9d09845c
mount: put read and write async buffers back - control with --buffer-size #1043
2017-02-14 22:59:52 +00:00
Nick Craig-Wood
ac1c041377
Redo log level flags
...
* -vv or --log-level DEBUG
* -v or --log-level INFO
* --log-level NOTICE (default)
* -q --log-level ERROR
Replace Config.Verbose and Config.Quiet with Config.LogLevel
Fixes #739 Fixes #1108 Fixes #1000
2017-02-11 20:22:42 +00:00
Nick Craig-Wood
80f53176d9
Rename log functions and factor into own file
2017-02-11 17:54:50 +00:00
Nick Craig-Wood
8a11da4e14
mount: Make fsync be a no-op for direectories too #1045
2017-02-02 21:31:41 +00:00
Nick Craig-Wood
37fe6d56e5
mount: fix docs for umount flags - fixes #1036
2017-01-30 18:17:16 +00:00
Nick Craig-Wood
29c6e22024
mount: Make fsync be a no-op rather than returning an error - fixes #1045
2017-01-29 11:29:42 +00:00
Nick Craig-Wood
a6b4065e13
mount: fix retry on network failure when reading off crypt - fixes #1042
2017-01-17 16:32:04 +00:00
Nick Craig-Wood
35a6436983
mount: implement proper directory handling (mkdir, rmdir)
...
Before this change mount only simulated rmdir & mkdir, now it actually
runs mkdir & rmdir on the underlying remote, using the new parmaeters
to fs.Mkdir and fs.Rmdir.
Fixes #956
2017-01-06 11:24:22 +00:00
Nick Craig-Wood
43c530922a
Restore ability for any command to show stats by adding --stats flag
...
Make default for `mount` command not to show stats - this can be
re-enabled by adding a `--stats` parameter.
2016-12-15 17:40:17 +00:00
Nick Craig-Wood
dd60f088ed
mount: retry reads on error #873
2016-12-15 17:16:55 +00:00
Nick Craig-Wood
0117aeafbf
mount: this removes the async buffering as it was killing seek performance
2016-12-15 17:08:52 +00:00
Nick Craig-Wood
13b705e227
mount: report the modification times for directories from the remote #940 #950
...
This stops the modification times for directories just being the
current time and reads them from the remote instead. This doesn't
take any extra transactions.
2016-12-14 15:26:04 +00:00
Nick Craig-Wood
c24da0b886
fuse: add stats printing and note which files are transferring
2016-12-04 16:59:46 +00:00
Nick Craig-Wood
be4fd51289
fuse: Add bandwidth accounting and buffering
...
This fixes rclone mount ignoring bwlimit and increases buffering which
should speed up transfers greatly.
Fixes #796
Fixes #690
2016-12-04 16:57:47 +00:00
Nick Craig-Wood
5e35aeca9e
Regularize the command definition names
2016-12-03 09:08:40 +00:00
Nick Craig-Wood
7929b6e756
fuse: support R/W files only if truncate is set.
...
Any reads on the file handle will return an error. This is to support
windows/samba writes.
2016-11-28 17:56:54 +00:00
Nick Craig-Wood
aaa1370a36
Add directory parameter to Rmdir and Mkdir #100 #831
...
This will enable rclone to manage directories properly in the future.
2016-11-26 12:02:53 +00:00
Nick Craig-Wood
c41b67ea08
mount: Implement statfs interface so df works - fixes #894
...
The data returned is not related to the files on the remote, but
apparently samba needs it.
2016-11-20 22:54:03 +00:00
Nick Craig-Wood
0b562bcabc
mount: Note that write is now supported on ACD
2016-11-19 10:54:37 +00:00
Stefan Breunig
bf243f30d3
report number of blocks in fuse
2016-11-12 14:10:36 +01:00
Nick Craig-Wood
64b5a76bec
mount: detect and deal with seeking beyond end of file - fixes #828
2016-11-05 09:59:36 +00:00
Nick Craig-Wood
7cfb1bdc70
fuse: tests: create the directory before starting tests
2016-11-05 09:57:45 +00:00
Nick Craig-Wood
062616e4dd
mount: update code comments
2016-10-30 17:46:00 +00:00
Nick Craig-Wood
87107413f5
fuse: add missing locking on filehandle read #823 #802
2016-10-27 09:57:52 +01:00
Nick Craig-Wood
77b975d16f
Note Amazon Drive doesn't support uploads via FUSE yet
2016-10-23 21:46:48 +01:00
Nick Craig-Wood
c464cc6376
mount: fix alignment of 64 bit counter on ARM #813
2016-10-23 17:36:35 +01:00
Nick Craig-Wood
93e84403bb
Remove io.SeekStart and replace with 0 as it is go 1.7 only
2016-10-22 12:07:51 +01:00
Nick Craig-Wood
eba0a3633b
crypt: speed up repeated seeking - fixes #804
2016-10-21 10:03:16 +01:00
Nick Craig-Wood
de73063977
Fix output of crypt objects in logs
2016-10-20 17:46:51 +01:00
Nick Craig-Wood
a02edb9e69
Add rclone mount --dir-cache-time to control caching of directory entries - fixes #680
2016-10-18 17:23:57 +01:00
Nick Craig-Wood
d8d11023d3
mount: update internal position on seek - fixes #774
2016-10-17 20:20:07 +01:00
Nick Craig-Wood
f45b3c87bf
mount: add --no-seek flag to disable seeking
2016-10-06 13:37:45 +01:00
Nick Craig-Wood
de80a540a7
mount: attempt to speed up
2016-10-05 21:04:57 +01:00
Nick Craig-Wood
392a86f585
mount: Fix read flushing - fixes #638
2016-10-05 21:03:56 +01:00
Nick Craig-Wood
265f5b77a7
mount: make files opened for read seekable - fixes #707
2016-10-05 21:03:56 +01:00
Nick Craig-Wood
5c91623148
mount: Implement FUSE mount options - fixes #653
2016-09-10 09:50:46 +01:00
Nick Craig-Wood
ca841c56a8
Disable smart dashes so --flag
shows properly in the docs - fixes #632
2016-08-22 16:46:08 +01:00
Nick Craig-Wood
9e7ddd5efc
Fix tests when FUSE isn't present
2016-08-20 14:11:21 +01:00
Nick Craig-Wood
f22029bf3d
Add mount command to implement FUSE mounting of remotes #494
...
This enables any rclone remote to be mounted and used as a filesystem
with some limitations.
Only supported for Linux, FreeBSD and OS X
2016-08-18 21:54:54 +01:00