From 63f01733b04fd7c681cb055e7c4f2b353dfcfcdd Mon Sep 17 00:00:00 2001 From: Derek McGowan Date: Wed, 5 Apr 2017 17:04:44 -0700 Subject: [PATCH] Update snapshot mkdir to check for directory exist When starting up a snapshot driver on subsequent runs, the mkdir call will return an exist error, this can be safely ignored. Signed-off-by: Derek McGowan --- snapshot/btrfs/btrfs.go | 6 +++++- snapshot/naive/naive.go | 2 +- snapshot/overlay/overlay.go | 2 +- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/snapshot/btrfs/btrfs.go b/snapshot/btrfs/btrfs.go index f3c9851..075daa4 100644 --- a/snapshot/btrfs/btrfs.go +++ b/snapshot/btrfs/btrfs.go @@ -46,6 +46,10 @@ type snapshotter struct { // device and root directory for snapshots and stores the metadata in // a file in the provided root. func NewSnapshotter(device, root string) (snapshot.Snapshotter, error) { + if err := os.MkdirAll(root, 0700); err != nil { + return nil, err + } + var ( active = filepath.Join(root, "active") snapshots = filepath.Join(root, "snapshots") @@ -55,7 +59,7 @@ func NewSnapshotter(device, root string) (snapshot.Snapshotter, error) { active, snapshots, } { - if err := os.MkdirAll(path, 0755); err != nil { + if err := os.Mkdir(path, 0755); err != nil && !os.IsExist(err) { return nil, err } } diff --git a/snapshot/naive/naive.go b/snapshot/naive/naive.go index 2c2c4d9..9fb52d8 100644 --- a/snapshot/naive/naive.go +++ b/snapshot/naive/naive.go @@ -40,7 +40,7 @@ func NewSnapshotter(root string) (snapshot.Snapshotter, error) { return nil, err } - if err := os.Mkdir(filepath.Join(root, "snapshots"), 0700); err != nil { + if err := os.Mkdir(filepath.Join(root, "snapshots"), 0700); err != nil && !os.IsExist(err) { return nil, err } diff --git a/snapshot/overlay/overlay.go b/snapshot/overlay/overlay.go index a93cb06..7e5627a 100644 --- a/snapshot/overlay/overlay.go +++ b/snapshot/overlay/overlay.go @@ -49,7 +49,7 @@ func NewSnapshotter(root string) (snapshot.Snapshotter, error) { return nil, err } - if err := os.MkdirAll(filepath.Join(root, "snapshots"), 0700); err != nil { + if err := os.Mkdir(filepath.Join(root, "snapshots"), 0700); err != nil && !os.IsExist(err) { return nil, err }