Skip to content

Commit 168ffcd

Browse files
authored
Merge pull request #49 from SLH335/block-device-paths
fix: add alternative block device path
2 parents 93cab39 + 378af3d commit 168ffcd

File tree

2 files changed

+20
-20
lines changed

2 files changed

+20
-20
lines changed

plugin.go

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -226,15 +226,17 @@ func (d plugin) Mount(r *volume.MountRequest) (*volume.MountResponse, error) {
226226
//
227227
// Waiting for device appearance
228228

229-
dev := fmt.Sprintf("/dev/disk/by-id/virtio-%.20s", vol.ID)
230-
logger.WithField("dev", dev).Debug("Waiting for device to appear...")
231-
err = waitForDevice(dev)
229+
logger.Debug("Waiting for device to appear...")
230+
231+
dev, err := findDeviceWithTimeout(vol.ID)
232232

233233
if err != nil {
234-
logger.WithError(err).Error("Expected block device not found")
235-
return nil, fmt.Errorf("Block device not found: %s", dev)
234+
logger.WithError(err).Error("Block device not found")
235+
return nil, err
236236
}
237237

238+
logger.WithField("dev", dev).Debug("Found device")
239+
238240
//
239241
// Check filesystem and format if necessary
240242

util.go

Lines changed: 13 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -32,29 +32,27 @@ func formatFilesystem(dev string, label string) error {
3232
return nil
3333
}
3434

35-
func waitForDevice(dev string) error {
36-
_, err := os.Stat(dev)
37-
if err != nil {
38-
if !os.IsNotExist(err) {
39-
return err
40-
}
41-
} else {
42-
return nil
35+
func findDeviceWithTimeout(volId string) (string, error) {
36+
devicePaths := []string{
37+
"/dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_%s",
38+
"/dev/disk/by-id/virtio-%.20s",
4339
}
4440

4541
for i := 1; i <= 10; i++ {
4642
time.Sleep(500 * time.Millisecond)
47-
48-
if _, err = os.Stat(dev); err != nil {
49-
if !os.IsNotExist(err) {
50-
return err
43+
for _, devicePath := range devicePaths {
44+
dev := fmt.Sprintf(devicePath, volId)
45+
if _, err := os.Stat(dev); err != nil {
46+
if !os.IsNotExist(err) {
47+
return "", err
48+
}
49+
} else {
50+
return dev, nil
5151
}
52-
} else {
53-
return nil
5452
}
5553
}
5654

57-
return fmt.Errorf("Timeout waiting for file: %s", dev)
55+
return "", fmt.Errorf("Block device not found")
5856
}
5957

6058
func isDirectoryPresent(path string) (bool, error) {

0 commit comments

Comments
 (0)