mirror of
https://github.com/rclone/rclone.git
synced 2024-11-26 02:09:55 +08:00
vfs: update cached copy if we know it has changed even if pending opens
This fixes a problem with Caddy serving corrupted files out of the VFS cache when the file on the remote changed.
This commit is contained in:
parent
9b011ce7e4
commit
5795bd7db6
|
@ -112,8 +112,8 @@ func (fh *RWFileHandle) openPending(truncate bool) (err error) {
|
||||||
// if not truncating the file, need to read it first
|
// if not truncating the file, need to read it first
|
||||||
if fh.flags&os.O_TRUNC == 0 && !truncate {
|
if fh.flags&os.O_TRUNC == 0 && !truncate {
|
||||||
// If the remote object exists AND its cached file exists locally AND there are no
|
// If the remote object exists AND its cached file exists locally AND there are no
|
||||||
// other handles with it open writers, then attempt to update it.
|
// other RW handles with it open, then attempt to update it.
|
||||||
if o != nil && fh.d.vfs.cache.opens(fh.remote) <= 1 {
|
if o != nil && fh.file.rwOpens() == 0 {
|
||||||
cacheObj, err := fh.d.vfs.cache.f.NewObject(fh.remote)
|
cacheObj, err := fh.d.vfs.cache.f.NewObject(fh.remote)
|
||||||
if err == nil && cacheObj != nil {
|
if err == nil && cacheObj != nil {
|
||||||
cacheObj, err = copyObj(fh.d.vfs.cache.f, cacheObj, fh.remote, o)
|
cacheObj, err = copyObj(fh.d.vfs.cache.f, cacheObj, fh.remote, o)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user