update locks
This commit is contained in:
parent
ace13b68a8
commit
73f9551c8f
8
addr.go
8
addr.go
@ -97,8 +97,8 @@ func (a Addr) SetManaged(managed bool) error {
|
|||||||
log.WithFields(log.Fields{"addr": a, "path": a.Path(), "error": err}).Errorf("")
|
log.WithFields(log.Fields{"addr": a, "path": a.Path(), "error": err}).Errorf("")
|
||||||
return err
|
return err
|
||||||
} else {
|
} else {
|
||||||
fs.mx.Lock()
|
fs.Lock()
|
||||||
defer fs.mx.Unlock()
|
defer fs.Unlock()
|
||||||
if fs.managed != managed {
|
if fs.managed != managed {
|
||||||
var cmd string
|
var cmd string
|
||||||
if managed {
|
if managed {
|
||||||
@ -129,8 +129,8 @@ func (a Addr) SetBackedUp(val bool) error {
|
|||||||
log.WithFields(log.Fields{"addr": a, "path": a.Path(), "error": err}).Errorf("")
|
log.WithFields(log.Fields{"addr": a, "path": a.Path(), "error": err}).Errorf("")
|
||||||
return err
|
return err
|
||||||
} else {
|
} else {
|
||||||
fs.mx.Lock()
|
fs.Lock()
|
||||||
defer fs.mx.Unlock()
|
defer fs.Unlock()
|
||||||
fs.backedUp = val
|
fs.backedUp = val
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
7
app.go
7
app.go
@ -514,9 +514,6 @@ func (a *App) Boxes() []*Box {
|
|||||||
log.WithFields(log.Fields{"app": a.name}).Debugf("starting")
|
log.WithFields(log.Fields{"app": a.name}).Debugf("starting")
|
||||||
defer log.WithFields(log.Fields{"app": a.name}).Debugf("done")
|
defer log.WithFields(log.Fields{"app": a.name}).Debugf("done")
|
||||||
|
|
||||||
cfgMx.Lock()
|
|
||||||
defer cfgMx.Unlock()
|
|
||||||
|
|
||||||
bm := make(map[string]struct{})
|
bm := make(map[string]struct{})
|
||||||
|
|
||||||
for _, s := range a.sources {
|
for _, s := range a.sources {
|
||||||
@ -552,8 +549,8 @@ func (a *App) RunFull() error {
|
|||||||
return fmt.Errorf("backup already running")
|
return fmt.Errorf("backup already running")
|
||||||
}
|
}
|
||||||
|
|
||||||
cfgMx.Lock()
|
CfgLock()
|
||||||
defer cfgMx.Unlock()
|
defer CfgUnlock()
|
||||||
|
|
||||||
cfgRun = true
|
cfgRun = true
|
||||||
defer func() { cfgRun = false }()
|
defer func() { cfgRun = false }()
|
||||||
|
18
box.go
18
box.go
@ -21,6 +21,16 @@ type Box struct {
|
|||||||
mx sync.Mutex
|
mx sync.Mutex
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (b *Box) Lock() {
|
||||||
|
log.WithFields(log.Fields{"name": b.name}).Debugf("starting")
|
||||||
|
b.mx.Lock()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (b *Box) Unlock() {
|
||||||
|
log.WithFields(log.Fields{"name": b.name}).Debugf("starting")
|
||||||
|
b.mx.Unlock()
|
||||||
|
}
|
||||||
|
|
||||||
func (c *Config) NewBox(name, addr, user, key string) (b *Box, err error) {
|
func (c *Config) NewBox(name, addr, user, key string) (b *Box, err error) {
|
||||||
log.WithFields(log.Fields{"name": name, "addr": addr, "user": user, "key": key}).Debugf("starting")
|
log.WithFields(log.Fields{"name": name, "addr": addr, "user": user, "key": key}).Debugf("starting")
|
||||||
defer log.WithFields(log.Fields{"name": name, "addr": addr, "user": user, "key": key}).Debugf("done")
|
defer log.WithFields(log.Fields{"name": name, "addr": addr, "user": user, "key": key}).Debugf("done")
|
||||||
@ -60,8 +70,8 @@ func (b *Box) Open() error {
|
|||||||
log.WithFields(log.Fields{"name": b.name}).Debugf("starting")
|
log.WithFields(log.Fields{"name": b.name}).Debugf("starting")
|
||||||
defer log.WithFields(log.Fields{"name": b.name}).Debugf("done")
|
defer log.WithFields(log.Fields{"name": b.name}).Debugf("done")
|
||||||
|
|
||||||
b.mx.Lock()
|
b.Lock()
|
||||||
defer b.mx.Unlock()
|
defer b.Unlock()
|
||||||
|
|
||||||
if b.online {
|
if b.online {
|
||||||
return nil
|
return nil
|
||||||
@ -89,8 +99,8 @@ func (b *Box) Close() error {
|
|||||||
log.WithFields(log.Fields{"name": b.name}).Debugf("starting")
|
log.WithFields(log.Fields{"name": b.name}).Debugf("starting")
|
||||||
defer log.WithFields(log.Fields{"name": b.name}).Debugf("done")
|
defer log.WithFields(log.Fields{"name": b.name}).Debugf("done")
|
||||||
|
|
||||||
b.mx.Lock()
|
b.Lock()
|
||||||
defer b.mx.Unlock()
|
defer b.Unlock()
|
||||||
|
|
||||||
if !b.online {
|
if !b.online {
|
||||||
return nil
|
return nil
|
||||||
|
23
config.go
23
config.go
@ -59,6 +59,17 @@ type EmailConfig struct {
|
|||||||
ToEmail []string `json:"email_to,omitempty"`
|
ToEmail []string `json:"email_to,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func CfgLock() {
|
||||||
|
log.WithFields(log.Fields{}).Debugf("starting")
|
||||||
|
cfgMx.Lock()
|
||||||
|
}
|
||||||
|
|
||||||
|
func CfgUnlock() {
|
||||||
|
log.WithFields(log.Fields{}).Debugf("starting")
|
||||||
|
cfgMx.Unlock()
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
// Load config from file
|
// Load config from file
|
||||||
func LoadConfigFile(path string) (*Config, error) {
|
func LoadConfigFile(path string) (*Config, error) {
|
||||||
log.WithFields(log.Fields{"path": path}).Debugf("starting")
|
log.WithFields(log.Fields{"path": path}).Debugf("starting")
|
||||||
@ -194,8 +205,8 @@ func (c *Config) Pretty() ([]byte, error) {
|
|||||||
log.WithFields(log.Fields{}).Debugf("starting")
|
log.WithFields(log.Fields{}).Debugf("starting")
|
||||||
defer log.WithFields(log.Fields{}).Debugf("done")
|
defer log.WithFields(log.Fields{}).Debugf("done")
|
||||||
|
|
||||||
cfgMx.Lock()
|
CfgLock()
|
||||||
defer cfgMx.Unlock()
|
defer CfgUnlock()
|
||||||
|
|
||||||
b, err := json.Marshal(cfg)
|
b, err := json.Marshal(cfg)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -211,8 +222,8 @@ func (a *AppConfig) Pretty() ([]byte, error) {
|
|||||||
log.WithFields(log.Fields{}).Debugf("starting")
|
log.WithFields(log.Fields{}).Debugf("starting")
|
||||||
defer log.WithFields(log.Fields{}).Debugf("done")
|
defer log.WithFields(log.Fields{}).Debugf("done")
|
||||||
|
|
||||||
cfgMx.Lock()
|
CfgLock()
|
||||||
defer cfgMx.Unlock()
|
defer CfgUnlock()
|
||||||
|
|
||||||
b, err := json.Marshal(a)
|
b, err := json.Marshal(a)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -258,8 +269,8 @@ func (c *Config) Run() {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
cfgMx.Lock()
|
CfgLock()
|
||||||
defer cfgMx.Unlock()
|
defer CfgUnlock()
|
||||||
|
|
||||||
cfgRun = true
|
cfgRun = true
|
||||||
defer func() { cfgRun = false }()
|
defer func() { cfgRun = false }()
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
// Code generated by version.sh (@generated) DO NOT EDIT.
|
// Code generated by version.sh (@generated) DO NOT EDIT.
|
||||||
package main
|
package main
|
||||||
var githash = "6ae863b"
|
var githash = "ace13b6"
|
||||||
var branch = "master"
|
var branch = "master"
|
||||||
var buildstamp = "2025-10-19_11:55:34"
|
var buildstamp = "2025-10-19_12:12:16"
|
||||||
var commits = "113"
|
var commits = "114"
|
||||||
var version = "6ae863b-b113 - 2025-10-19_11:55:34"
|
var version = "ace13b6-b114 - 2025-10-19_12:12:16"
|
||||||
|
48
zfs.go
48
zfs.go
@ -36,12 +36,32 @@ type ZfsSnapshot struct {
|
|||||||
fs *ZfsFs
|
fs *ZfsFs
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (z *BoxZfs) Lock() {
|
||||||
|
log.WithFields(log.Fields{"name": z.box.name}).Debugf("starting")
|
||||||
|
z.mx.Lock()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (z *BoxZfs) Unlock() {
|
||||||
|
log.WithFields(log.Fields{"name": z.box.name}).Debugf("starting")
|
||||||
|
z.mx.Unlock()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (fs *ZfsFs) Lock() {
|
||||||
|
log.WithFields(log.Fields{"box": fs.zfs.box.name, "fs": fs.path}).Debugf("starting")
|
||||||
|
fs.mx.Lock()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (fs *ZfsFs) Unlock() {
|
||||||
|
log.WithFields(log.Fields{"box": fs.zfs.box.name, "fs": fs.path}).Debugf("starting")
|
||||||
|
fs.mx.Unlock()
|
||||||
|
}
|
||||||
|
|
||||||
func (z *BoxZfs) Open() error {
|
func (z *BoxZfs) Open() error {
|
||||||
log.WithFields(log.Fields{"name": z.box.name}).Debugf("starting")
|
log.WithFields(log.Fields{"name": z.box.name}).Debugf("starting")
|
||||||
defer log.WithFields(log.Fields{"name": z.box.name}).Debugf("done")
|
defer log.WithFields(log.Fields{"name": z.box.name}).Debugf("done")
|
||||||
|
|
||||||
z.mx.Lock()
|
z.Lock()
|
||||||
defer z.mx.Unlock()
|
defer z.Unlock()
|
||||||
|
|
||||||
if z.online {
|
if z.online {
|
||||||
return nil
|
return nil
|
||||||
@ -146,12 +166,12 @@ func (z *BoxZfs) Close() error {
|
|||||||
log.WithFields(log.Fields{"name": z.box.name}).Debugf("starting")
|
log.WithFields(log.Fields{"name": z.box.name}).Debugf("starting")
|
||||||
defer log.WithFields(log.Fields{"name": z.box.name}).Debugf("done")
|
defer log.WithFields(log.Fields{"name": z.box.name}).Debugf("done")
|
||||||
|
|
||||||
z.mx.Lock()
|
z.Lock()
|
||||||
defer z.mx.Unlock()
|
defer z.Unlock()
|
||||||
|
|
||||||
for _, fs := range z.filesystems {
|
for _, fs := range z.filesystems {
|
||||||
fs.mx.Lock()
|
fs.Lock()
|
||||||
defer fs.mx.Unlock()
|
defer fs.Unlock()
|
||||||
}
|
}
|
||||||
|
|
||||||
z.online = false
|
z.online = false
|
||||||
@ -169,8 +189,8 @@ func (z *BoxZfs) Mkdir(path string) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
z.mx.Lock()
|
z.Lock()
|
||||||
defer z.mx.Unlock()
|
defer z.Unlock()
|
||||||
|
|
||||||
b := z.box
|
b := z.box
|
||||||
if !b.online {
|
if !b.online {
|
||||||
@ -230,8 +250,8 @@ func (fs *ZfsFs) TakeSnapshot(name string) (*ZfsSnapshot, error) {
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
fs.mx.Lock()
|
fs.Lock()
|
||||||
defer fs.mx.Unlock()
|
defer fs.Unlock()
|
||||||
|
|
||||||
if _, ok := fs.snapshots[name]; ok {
|
if _, ok := fs.snapshots[name]; ok {
|
||||||
err := errors.New("already exists")
|
err := errors.New("already exists")
|
||||||
@ -264,8 +284,8 @@ func (fs *ZfsFs) DelSnapshot(name string) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
fs.mx.Lock()
|
fs.Lock()
|
||||||
defer fs.mx.Unlock()
|
defer fs.Unlock()
|
||||||
|
|
||||||
if _, ok := fs.snapshots[name]; !ok {
|
if _, ok := fs.snapshots[name]; !ok {
|
||||||
err := errors.New("doesn't exist")
|
err := errors.New("doesn't exist")
|
||||||
@ -296,8 +316,8 @@ func (fs *ZfsFs) AddSnapshot(s *ZfsSnapshot) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
fs.mx.Lock()
|
fs.Lock()
|
||||||
defer fs.mx.Unlock()
|
defer fs.Unlock()
|
||||||
|
|
||||||
if _, ok := fs.snapshots[s.name]; ok {
|
if _, ok := fs.snapshots[s.name]; ok {
|
||||||
err := errors.New("already exist")
|
err := errors.New("already exist")
|
||||||
|
Loading…
x
Reference in New Issue
Block a user