On 09/16/2015 12:06 AM, Paolo Bonzini wrote:
On 25/08/2015 18:03, Stefan Hajnoczi wrote:
+static uint64_t get_file_size(int fd)
+{
+ struct stat stat_buf;
+ uint64_t size;
+
+ if (fstat(fd, &stat_buf) < 0) {
+ return 0;
+ }
+
+ if (S_ISREG(stat_buf.st_mode)) {
+ return stat_buf.st_size;
+ }
+
+ if (S_ISBLK(stat_buf.st_mode) && !ioctl(fd, BLKGETSIZE64, &size)) {
+ return size;
+ }
#ifdef __linux__ for ioctl(fd, BLKGETSIZE64, &size)?
There is nothing Linux-specific about emulating NVDIMMs so this code
should compile on all platforms.
The code from block/raw-posix.c and block/raw-win32.c's raw_getlength
should probably be extracted to a new function in utils/, and reused here.
The function you pointed out is really complex - it mixed 9 platforms and each
platform has its own specific implementation. It is hard for us to verify the
change.
I'd prefer to make it for Linux specific first then share it to other platforms
if it's needed in the future.
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html