svn commit: r323740 - stable/11/usr.sbin/bhyveload
Andriy Gapon
avg at FreeBSD.org
Tue Sep 19 08:19:49 UTC 2017
Author: avg
Date: Tue Sep 19 08:19:47 2017
New Revision: 323740
URL: https://svnweb.freebsd.org/changeset/base/323740
Log:
MFV r320195: bhyveload: correctly query size of disks
On FreeBSD fstat(2) works fine for querying sizes of plain files,
but not so much for character devices.
So, use DIOCGMEDIASIZE to try to get the correct size for disks
and disk-like devices (e.g. zvols).
PR: 220186
Modified:
stable/11/usr.sbin/bhyveload/bhyveload.c
Directory Properties:
stable/11/ (props changed)
Modified: stable/11/usr.sbin/bhyveload/bhyveload.c
==============================================================================
--- stable/11/usr.sbin/bhyveload/bhyveload.c Tue Sep 19 08:19:20 2017 (r323739)
+++ stable/11/usr.sbin/bhyveload/bhyveload.c Tue Sep 19 08:19:47 2017 (r323740)
@@ -311,10 +311,12 @@ cb_diskioctl(void *arg, int unit, u_long cmd, void *da
*(u_int *)data = 512;
break;
case DIOCGMEDIASIZE:
- if (fstat(disk_fd[unit], &sb) == 0)
- *(off_t *)data = sb.st_size;
- else
+ if (fstat(disk_fd[unit], &sb) != 0)
return (ENOTTY);
+ if (S_ISCHR(sb.st_mode) &&
+ ioctl(disk_fd[unit], DIOCGMEDIASIZE, &sb.st_size) != 0)
+ return (ENOTTY);
+ *(off_t *)data = sb.st_size;
break;
default:
return (ENOTTY);
More information about the svn-src-stable-11
mailing list