Browse code

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 authored on 2015/12/01 22:05:46
Showing 1 changed files
... ...
@@ -574,7 +574,7 @@ func determineDefaultFS() string {
574 574
 	return "ext4"
575 575
 }
576 576
 
577
-func (devices *DeviceSet) createFilesystem(info *devInfo) error {
577
+func (devices *DeviceSet) createFilesystem(info *devInfo) (err error) {
578 578
 	devname := info.DevName()
579 579
 
580 580
 	args := []string{}
... ...
@@ -584,12 +584,19 @@ func (devices *DeviceSet) createFilesystem(info *devInfo) error {
584 584
 
585 585
 	args = append(args, devname)
586 586
 
587
-	var err error
588
-
589 587
 	if devices.filesystem == "" {
590 588
 		devices.filesystem = determineDefaultFS()
591 589
 	}
592 590
 
591
+	logrus.Infof("devmapper: Creating filesystem %s on device %s", devices.filesystem, info.Name())
592
+	defer func() {
593
+		if err != nil {
594
+			logrus.Infof("devmapper: Error while creating filesystem %s on device %s: %v", devices.filesystem, info.Name(), err)
595
+		} else {
596
+			logrus.Infof("devmapper: Successfully created filesystem %s on device %s", devices.filesystem, info.Name())
597
+		}
598
+	}()
599
+
593 600
 	switch devices.filesystem {
594 601
 	case "xfs":
595 602
 		err = exec.Command("mkfs.xfs", args...).Run()
... ...
@@ -605,11 +612,7 @@ func (devices *DeviceSet) createFilesystem(info *devInfo) error {
605 605
 	default:
606 606
 		err = fmt.Errorf("Unsupported filesystem type %s", devices.filesystem)
607 607
 	}
608
-	if err != nil {
609
-		return err
610
-	}
611
-
612
-	return nil
608
+	return
613 609
 }
614 610
 
615 611
 func (devices *DeviceSet) migrateOldMetaData() error {