Check if the target loopback is a block device

This commit is contained in:
Guillaume J. Charmes 2013-11-27 18:21:17 -08:00
parent 1214b8897b
commit 8a5d927a53
No known key found for this signature in database
GPG Key ID: B33E4642CB6E3FF3
2 changed files with 7 additions and 5 deletions

View File

@ -39,8 +39,9 @@ func openNextAvailableLoopback(index int, sparseFile *osFile) (loopFile *osFile,
return nil, ErrAttachLoopbackDevice
}
// FIXME: Check here if target is a block device (in C: S_ISBLK(mode))
if fi.IsDir() {
if fi.Mode()&osModeDevice != osModeDevice {
utils.Errorf("Loopback device %s is not a block device.", target)
continue
}
// Open the targeted loopback (use OpenFile because Open sets O_CLOEXEC)

View File

@ -46,9 +46,10 @@ const (
sysSysIoctl = syscall.SYS_IOCTL
sysEBusy = syscall.EBUSY
osORdOnly = os.O_RDONLY
osORdWr = os.O_RDWR
osOCreate = os.O_CREATE
osORdOnly = os.O_RDONLY
osORdWr = os.O_RDWR
osOCreate = os.O_CREATE
osModeDevice = os.ModeDevice
)
func toSysStatT(i interface{}) *sysStatT {