code: func (devices *DeviceSet) MountDevice(hash, path, mountLabel string) error {
  	info, err := devices.lookupDeviceWithLock(hash)
  	if err != nil {
  		return err
  	}
  
  	if info.Deleted {
  		return fmt.Errorf("devmapper: Can't mount device %v as it has been marked for deferred deletion", info.Hash)
  	}
  
  	info.lock.Lock()
  	defer info.lock.Unlock()
  
  	devices.Lock()
  	defer devices.Unlock()
  
  	if err := devices.activateDeviceIfNeeded(info, false); err != nil {
  		return fmt.Errorf("devmapper: Error activating devmapper device for '%s': %s", hash, err)
  	}
  
  	fstype, err := ProbeFsType(info.DevName())
  	if err != nil {
  		return err
  	}
  
  	options := ""
  
  	if fstype == "xfs" {
  		// XFS needs nouuid or it can't mount filesystems with the same fs
  		options = joinMountOptions(options, "nouuid")
  	}
  
  	options = joinMountOptions(options, devices.mountOptions)
  	options = joinMountOptions(options, label.FormatMountLabel("", mountLabel))
  
  	if err := mount.Mount(info.DevName(), path, fstype, options); err != nil {
  		return errors.Wrapf(err, "Failed to mount; dmesg: %s", string(dmesg.Dmesg(256)))
  	}
  
  	if fstype == "xfs" && devices.xfsNospaceRetries != "" {
  		if err := devices.xfsSetNospaceRetries(info); err != nil {
  			unix.Unmount(path, unix.MNT_DETACH)
  			devices.deactivateDevice(info)
  			return err
  		}
  	}
  
  	return nil
  }
docs: // MountDevice mounts the device if not already mounted.