mirror of https://github.com/k3s-io/k3s
Add Release function for flock
parent
360d82d20e
commit
66d29148f7
|
@ -19,6 +19,11 @@ limitations under the License.
|
|||
package flock
|
||||
|
||||
// Acquire is not implemented on non-unix systems.
|
||||
func Acquire(path string) error {
|
||||
func Acquire(path string) (int, error) {
|
||||
return -1, nil
|
||||
}
|
||||
|
||||
// Release is not implemented on non-unix systems.
|
||||
func Release(lock int) error {
|
||||
return nil
|
||||
}
|
||||
|
|
|
@ -20,16 +20,17 @@ package flock
|
|||
|
||||
import "golang.org/x/sys/unix"
|
||||
|
||||
// Acquire acquires a lock on a file for the duration of the process. This method
|
||||
// is reentrant.
|
||||
func Acquire(path string) error {
|
||||
fd, err := unix.Open(path, unix.O_CREAT|unix.O_RDWR|unix.O_CLOEXEC, 0600)
|
||||
// Acquire creates an exclusive lock on a file for the duration of the process, or until Release(d).
|
||||
// This method is reentrant.
|
||||
func Acquire(path string) (int, error) {
|
||||
lock, err := unix.Open(path, unix.O_CREAT|unix.O_RDWR|unix.O_CLOEXEC, 0600)
|
||||
if err != nil {
|
||||
return err
|
||||
return -1, err
|
||||
}
|
||||
|
||||
// We don't need to close the fd since we should hold
|
||||
// it until the process exits.
|
||||
|
||||
return unix.Flock(fd, unix.LOCK_EX)
|
||||
return lock, unix.Flock(lock, unix.LOCK_EX)
|
||||
}
|
||||
|
||||
// Release removes an existing lock held by this process.
|
||||
func Release(lock int) error {
|
||||
return unix.Flock(lock, unix.LOCK_UN)
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue