sftp: performance: don't consult config file outside of Fs setup

This commit is contained in:
Jon Fautley 2018-01-20 19:56:54 +00:00 committed by Nick Craig-Wood
parent e57a388851
commit 71bc108ce6

View file

@ -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 {