浏览代码

devmapper: Log start and end of filesystem creation

ext4 filesystem creation can take a long time on 100G thin device and
systemd might time out and kill docker service. Often user is left thinking
why docker is taking so long and logs don't give any hint. Log an info
message in journal for start and end of filesystem creation. That way
a user can look at logs and figure out that filesystem creation is
taking long time.

Signed-off-by: Vivek Goyal <vgoyal@redhat.com>
Vivek Goyal 9 年之前
父节点
当前提交
a489e685c0
共有 1 个文件被更改,包括 11 次插入8 次删除
  1. 11 8
      daemon/graphdriver/devmapper/deviceset.go

+ 11 - 8
daemon/graphdriver/devmapper/deviceset.go

@@ -574,7 +574,7 @@ func determineDefaultFS() string {
 	return "ext4"
 	return "ext4"
 }
 }
 
 
-func (devices *DeviceSet) createFilesystem(info *devInfo) error {
+func (devices *DeviceSet) createFilesystem(info *devInfo) (err error) {
 	devname := info.DevName()
 	devname := info.DevName()
 
 
 	args := []string{}
 	args := []string{}
@@ -584,12 +584,19 @@ func (devices *DeviceSet) createFilesystem(info *devInfo) error {
 
 
 	args = append(args, devname)
 	args = append(args, devname)
 
 
-	var err error
-
 	if devices.filesystem == "" {
 	if devices.filesystem == "" {
 		devices.filesystem = determineDefaultFS()
 		devices.filesystem = determineDefaultFS()
 	}
 	}
 
 
+	logrus.Infof("devmapper: Creating filesystem %s on device %s", devices.filesystem, info.Name())
+	defer func() {
+		if err != nil {
+			logrus.Infof("devmapper: Error while creating filesystem %s on device %s: %v", devices.filesystem, info.Name(), err)
+		} else {
+			logrus.Infof("devmapper: Successfully created filesystem %s on device %s", devices.filesystem, info.Name())
+		}
+	}()
+
 	switch devices.filesystem {
 	switch devices.filesystem {
 	case "xfs":
 	case "xfs":
 		err = exec.Command("mkfs.xfs", args...).Run()
 		err = exec.Command("mkfs.xfs", args...).Run()
@@ -605,11 +612,7 @@ func (devices *DeviceSet) createFilesystem(info *devInfo) error {
 	default:
 	default:
 		err = fmt.Errorf("Unsupported filesystem type %s", devices.filesystem)
 		err = fmt.Errorf("Unsupported filesystem type %s", devices.filesystem)
 	}
 	}
-	if err != nil {
-		return err
-	}
-
-	return nil
+	return
 }
 }
 
 
 func (devices *DeviceSet) migrateOldMetaData() error {
 func (devices *DeviceSet) migrateOldMetaData() error {