update locks

This commit is contained in:
shoopea
2025-10-19 14:12:31 +02:00
parent ace13b68a8
commit 73f9551c8f
6 changed files with 75 additions and 37 deletions

48
zfs.go
View File

@@ -36,12 +36,32 @@ type ZfsSnapshot struct {
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 {
log.WithFields(log.Fields{"name": z.box.name}).Debugf("starting")
defer log.WithFields(log.Fields{"name": z.box.name}).Debugf("done")
z.mx.Lock()
defer z.mx.Unlock()
z.Lock()
defer z.Unlock()
if z.online {
return nil
@@ -146,12 +166,12 @@ func (z *BoxZfs) Close() error {
log.WithFields(log.Fields{"name": z.box.name}).Debugf("starting")
defer log.WithFields(log.Fields{"name": z.box.name}).Debugf("done")
z.mx.Lock()
defer z.mx.Unlock()
z.Lock()
defer z.Unlock()
for _, fs := range z.filesystems {
fs.mx.Lock()
defer fs.mx.Unlock()
fs.Lock()
defer fs.Unlock()
}
z.online = false
@@ -169,8 +189,8 @@ func (z *BoxZfs) Mkdir(path string) error {
return err
}
z.mx.Lock()
defer z.mx.Unlock()
z.Lock()
defer z.Unlock()
b := z.box
if !b.online {
@@ -230,8 +250,8 @@ func (fs *ZfsFs) TakeSnapshot(name string) (*ZfsSnapshot, error) {
return nil, err
}
fs.mx.Lock()
defer fs.mx.Unlock()
fs.Lock()
defer fs.Unlock()
if _, ok := fs.snapshots[name]; ok {
err := errors.New("already exists")
@@ -264,8 +284,8 @@ func (fs *ZfsFs) DelSnapshot(name string) error {
return err
}
fs.mx.Lock()
defer fs.mx.Unlock()
fs.Lock()
defer fs.Unlock()
if _, ok := fs.snapshots[name]; !ok {
err := errors.New("doesn't exist")
@@ -296,8 +316,8 @@ func (fs *ZfsFs) AddSnapshot(s *ZfsSnapshot) error {
return err
}
fs.mx.Lock()
defer fs.mx.Unlock()
fs.Lock()
defer fs.Unlock()
if _, ok := fs.snapshots[s.name]; ok {
err := errors.New("already exist")