@@ -101,9 +101,14 @@ func initDisk(b backend.Storage, sectorSize SectorSize) (*disk.Disk, error) {
101101 }
102102
103103 // get device information
104+ deviceType , err := disk .DetermineDeviceType (b )
105+ if err != nil {
106+ return nil , err
107+ }
108+
104109 devInfo , err := b .Stat ()
105110 if err != nil {
106- return nil , fmt .Errorf ("could not get info for device %s : %v" , devInfo . Name () , err )
111+ return nil , fmt .Errorf ("could not get info for device: %v" , err )
107112 }
108113
109114 newDisk := & disk.Disk {
@@ -114,14 +119,13 @@ func initDisk(b backend.Storage, sectorSize SectorSize) (*disk.Disk, error) {
114119 DefaultBlocks : true ,
115120 }
116121
117- mode := devInfo .Mode ()
118- switch {
119- case mode .IsRegular ():
122+ switch deviceType {
123+ case disk .DeviceTypeFile :
120124 log .Debug ("initDisk(): regular file" )
121125 if newDisk .Size <= 0 {
122126 return nil , fmt .Errorf ("could not get file size for device %s" , devInfo .Name ())
123127 }
124- case mode & os . ModeDevice != 0 :
128+ case disk . DeviceTypeBlockDevice :
125129 log .Debug ("initDisk(): block device" )
126130 osFile , err := newDisk .Backend .Sys ()
127131 if err != nil {
@@ -145,7 +149,8 @@ func initDisk(b backend.Storage, sectorSize SectorSize) (*disk.Disk, error) {
145149 newDisk .PhysicalBlocksize = pblksize
146150 newDisk .DefaultBlocks = false
147151 }
148-
152+ case disk .DeviceTypeUnknown :
153+ return nil , fmt .Errorf ("device %s is neither a block device nor a regular file" , devInfo .Name ())
149154 default :
150155 return nil , fmt .Errorf ("device %s is neither a block device nor a regular file" , devInfo .Name ())
151156 }
0 commit comments