sftp: performance: don't consult config file outside of Fs setup
This commit is contained in:
parent
e57a388851
commit
71bc108ce6
1 changed files with 28 additions and 23 deletions
|
@ -99,6 +99,8 @@ type Fs struct {
|
||||||
url string
|
url string
|
||||||
mkdirLock *stringLock
|
mkdirLock *stringLock
|
||||||
cachedHashes *hash.Set
|
cachedHashes *hash.Set
|
||||||
|
hashcheckDisabled bool
|
||||||
|
setModtime bool
|
||||||
poolMu sync.Mutex
|
poolMu sync.Mutex
|
||||||
pool []*conn
|
pool []*conn
|
||||||
connLimit *rate.Limiter // for limiting number of connections per second
|
connLimit *rate.Limiter // for limiting number of connections per second
|
||||||
|
@ -273,6 +275,8 @@ func NewFs(name, root string) (fs.Fs, error) {
|
||||||
pass := config.FileGet(name, "pass")
|
pass := config.FileGet(name, "pass")
|
||||||
keyFile := config.FileGet(name, "key_file")
|
keyFile := config.FileGet(name, "key_file")
|
||||||
insecureCipher := config.FileGetBool(name, "use_insecure_cipher")
|
insecureCipher := config.FileGetBool(name, "use_insecure_cipher")
|
||||||
|
hashcheckDisabled := config.FileGetBool(name, "disable_hashcheck")
|
||||||
|
setModtime := config.FileGetBool(name, "set_modtime", true)
|
||||||
if user == "" {
|
if user == "" {
|
||||||
user = currentUser
|
user = currentUser
|
||||||
}
|
}
|
||||||
|
@ -333,6 +337,8 @@ func NewFs(name, root string) (fs.Fs, error) {
|
||||||
host: host,
|
host: host,
|
||||||
port: port,
|
port: port,
|
||||||
url: "sftp://" + user + "@" + host + ":" + port + "/" + root,
|
url: "sftp://" + user + "@" + host + ":" + port + "/" + root,
|
||||||
|
hashcheckDisabled: hashcheckDisabled,
|
||||||
|
setModtime: setModtime,
|
||||||
mkdirLock: newStringLock(),
|
mkdirLock: newStringLock(),
|
||||||
connLimit: rate.NewLimiter(rate.Limit(connectionsPerSecond), 1),
|
connLimit: rate.NewLimiter(rate.Limit(connectionsPerSecond), 1),
|
||||||
}
|
}
|
||||||
|
@ -640,8 +646,7 @@ func (f *Fs) Hashes() hash.Set {
|
||||||
return *f.cachedHashes
|
return *f.cachedHashes
|
||||||
}
|
}
|
||||||
|
|
||||||
hashcheckDisabled := config.FileGetBool(f.name, "disable_hashcheck")
|
if f.hashcheckDisabled {
|
||||||
if hashcheckDisabled {
|
|
||||||
return hash.Set(hash.None)
|
return hash.Set(hash.None)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -816,7 +821,7 @@ func (o *Object) SetModTime(modTime time.Time) error {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return errors.Wrap(err, "SetModTime")
|
return errors.Wrap(err, "SetModTime")
|
||||||
}
|
}
|
||||||
if config.FileGetBool(o.fs.name, "set_modtime", true) {
|
if o.fs.setModtime {
|
||||||
err = c.sftpClient.Chtimes(o.path(), modTime, modTime)
|
err = c.sftpClient.Chtimes(o.path(), modTime, modTime)
|
||||||
o.fs.putSftpConnection(&c, err)
|
o.fs.putSftpConnection(&c, err)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
Loading…
Reference in a new issue