The following pull request was submitted through Github. It can be accessed and reviewed at: https://github.com/lxc/lxd/pull/3401
This e-mail was sent by the LXC bot, direct replies will not reach the author unless they happen to be subscribed to this list. === Description (from pull-request) === Instead of creating the dataset and then setting its mountpoint let's create the dataset with the mountpoint right away. Closes #3399. Signed-off-by: Christian Brauner <[email protected]>
From 24f8f10835ac45a10878383d78dfd49b7256af6e Mon Sep 17 00:00:00 2001 From: Christian Brauner <[email protected]> Date: Mon, 12 Jun 2017 19:00:21 +0200 Subject: [PATCH] zfs: improve dummy dataset creation Instead of creating the dataset and then setting its mountpoint let's create the dataset with the mountpoint right away. Closes #3399. Signed-off-by: Christian Brauner <[email protected]> --- lxd/storage_zfs.go | 48 ++++++++++++++++++++---------------------------- 1 file changed, 20 insertions(+), 28 deletions(-) diff --git a/lxd/storage_zfs.go b/lxd/storage_zfs.go index dea7044f5..a64e14dc0 100644 --- a/lxd/storage_zfs.go +++ b/lxd/storage_zfs.go @@ -1842,75 +1842,67 @@ func (s *storageZfs) zfsPoolCreate() error { // Create default dummy datasets to avoid zfs races during container // creation. - err := s.zfsPoolVolumeCreate("containers") - if err != nil { - return err - } - - err = s.zfsPoolVolumeSet("containers", "mountpoint", "none") + fixperms := shared.VarPath("storage-pools", s.pool.Name, "containers") + msg, err := zfsPoolVolumeCreate("containers", fmt.Sprintf("mountpoint=%s", fixperms)) if err != nil { + logger.Errorf("failed to create containers dataset: %s", msg); return err } - fixperms := shared.VarPath("storage-pools", s.pool.Name, "containers") err = os.Chmod(fixperms, containersDirMode) if err != nil { logger.Warnf("failed to chmod \"%s\" to \"0%s\": %s", fixperms, strconv.FormatInt(int64(containersDirMode), 8), err) } - err = s.zfsPoolVolumeCreate("images") + msg, err = zfsPoolVolumeCreate("images", "mountpoint=none") if err != nil { + logger.Errorf("failed to create images dataset: %s", msg); return err } - err = s.zfsPoolVolumeSet("images", "mountpoint", "none") - if err != nil { + fixperms = shared.VarPath("storage-pools", s.pool.Name, "images") + err = os.MkdirAll(fixperms, imagesDirMode) + if err != nil && !os.IsNotExist(err) { return err } - - fixperms = shared.VarPath("storage-pools", s.pool.Name, "images") err = os.Chmod(fixperms, imagesDirMode) if err != nil { logger.Warnf("failed to chmod \"%s\" to \"0%s\": %s", fixperms, strconv.FormatInt(int64(imagesDirMode), 8), err) } - err = s.zfsPoolVolumeCreate("custom") + msg, err = zfsPoolVolumeCreate("custom", "mountpoint=none") if err != nil { + logger.Errorf("failed to create custom dataset: %s", msg); return err } - err = s.zfsPoolVolumeSet("custom", "mountpoint", "none") - if err != nil { + fixperms = shared.VarPath("storage-pools", s.pool.Name, "custom") + err = os.MkdirAll(fixperms, imagesDirMode) + if err != nil && !os.IsNotExist(err) { return err } - - fixperms = shared.VarPath("storage-pools", s.pool.Name, "custom") err = os.Chmod(fixperms, customDirMode) if err != nil { logger.Warnf("failed to chmod \"%s\" to \"0%s\": %s", fixperms, strconv.FormatInt(int64(customDirMode), 8), err) } - err = s.zfsPoolVolumeCreate("deleted") + msg, err = zfsPoolVolumeCreate("deleted", "mountpoint=none") if err != nil { + logger.Errorf("failed to create deleted dataset: %s", msg); return err } - err = s.zfsPoolVolumeSet("deleted", "mountpoint", "none") + msg, err = zfsPoolVolumeCreate("snapshots", "mountpoint=none") if err != nil { + logger.Errorf("failed to create snapshots dataset: %s", msg); return err } - err = s.zfsPoolVolumeCreate("snapshots") - if err != nil { - return err - } - - err = s.zfsPoolVolumeSet("snapshots", "mountpoint", "none") - if err != nil { + fixperms = shared.VarPath("storage-pools", s.pool.Name, "snapshots") + err = os.MkdirAll(fixperms, imagesDirMode) + if err != nil && !os.IsNotExist(err) { return err } - - fixperms = shared.VarPath("storage-pools", s.pool.Name, "snapshots") err = os.Chmod(fixperms, snapshotsDirMode) if err != nil { logger.Warnf("failed to chmod \"%s\" to \"0%s\": %s", fixperms, strconv.FormatInt(int64(snapshotsDirMode), 8), err)
_______________________________________________ lxc-devel mailing list [email protected] http://lists.linuxcontainers.org/listinfo/lxc-devel
