From a56c11753a707302d90d9ef174d0ebc803b9315d Mon Sep 17 00:00:00 2001 From: Roberto Ricci Date: Fri, 18 Aug 2023 16:10:13 +0200 Subject: [PATCH] local: use atomic types --- backend/local/local.go | 5 +++-- backend/local/xattr.go | 7 +++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/backend/local/local.go b/backend/local/local.go index bb9f739eb..5cee05af4 100644 --- a/backend/local/local.go +++ b/backend/local/local.go @@ -13,6 +13,7 @@ import ( "runtime" "strings" "sync" + "sync/atomic" "time" "unicode/utf8" @@ -243,7 +244,7 @@ type Fs struct { precision time.Duration // precision of local filesystem warnedMu sync.Mutex // used for locking access to 'warned'. warned map[string]struct{} // whether we have warned about this string - xattrSupported int32 // whether xattrs are supported (atomic access) + xattrSupported atomic.Int32 // whether xattrs are supported // do os.Lstat or os.Stat lstat func(name string) (os.FileInfo, error) @@ -291,7 +292,7 @@ func NewFs(ctx context.Context, name, root string, m configmap.Mapper) (fs.Fs, e lstat: os.Lstat, } if xattrSupported { - f.xattrSupported = 1 + f.xattrSupported.Store(1) } f.root = cleanRootPath(root, f.opt.NoUNC, f.opt.Enc) f.features = (&fs.Features{ diff --git a/backend/local/xattr.go b/backend/local/xattr.go index 81e86d8a5..fec0e4e7b 100644 --- a/backend/local/xattr.go +++ b/backend/local/xattr.go @@ -6,7 +6,6 @@ package local import ( "fmt" "strings" - "sync/atomic" "syscall" "github.com/pkg/xattr" @@ -28,7 +27,7 @@ func (f *Fs) xattrIsNotSupported(err error) bool { // Xattrs not supported can be ENOTSUP or ENOATTR or EINVAL (on Solaris) if xattrErr.Err == syscall.EINVAL || xattrErr.Err == syscall.ENOTSUP || xattrErr.Err == xattr.ENOATTR { // Show xattrs not supported - if atomic.CompareAndSwapInt32(&f.xattrSupported, 1, 0) { + if f.xattrSupported.CompareAndSwap(1, 0) { fs.Errorf(f, "xattrs not supported - disabling: %v", err) } return true @@ -41,7 +40,7 @@ func (f *Fs) xattrIsNotSupported(err error) bool { // It doesn't return any attributes owned by this backend in // metadataKeys func (o *Object) getXattr() (metadata fs.Metadata, err error) { - if !xattrSupported || atomic.LoadInt32(&o.fs.xattrSupported) == 0 { + if !xattrSupported || o.fs.xattrSupported.Load() == 0 { return nil, nil } var list []string @@ -90,7 +89,7 @@ func (o *Object) getXattr() (metadata fs.Metadata, err error) { // // It doesn't set any attributes owned by this backend in metadataKeys func (o *Object) setXattr(metadata fs.Metadata) (err error) { - if !xattrSupported || atomic.LoadInt32(&o.fs.xattrSupported) == 0 { + if !xattrSupported || o.fs.xattrSupported.Load() == 0 { return nil } for k, value := range metadata {