#include "qapi/qmp-output-visitor.h"
#include "qapi/qmp/types.h"
#include "sysemu/block-backend.h"
-#ifdef __linux__
-#include <linux/fs.h>
-#include <sys/ioctl.h>
-#ifndef FS_NOCOW_FL
-#define FS_NOCOW_FL 0x00800000 /* Do not cow file */
-#endif
-#endif
BlockDeviceInfo *bdrv_block_device_info(BlockDriverState *bs)
{
int ret;
Error *err = NULL;
ImageInfo *info;
-#ifdef __linux__
- int fd, attr;
-#endif
size = bdrv_getlength(bs);
if (size < 0) {
info->format_specific = bdrv_get_specific_info(bs);
info->has_format_specific = info->format_specific != NULL;
-#ifdef __linux__
- /* get NOCOW info */
- fd = qemu_open(bs->filename, O_RDONLY | O_NONBLOCK);
- if (fd >= 0) {
- if (ioctl(fd, FS_IOC_GETFLAGS, &attr) == 0 && (attr & FS_NOCOW_FL)) {
- info->has_nocow = true;
- info->nocow = true;
- }
- qemu_close(fd);
- }
-#endif
-
backing_filename = bs->backing_file;
if (backing_filename[0] != '\0') {
info->backing_filename = g_strdup(backing_filename);
func_fprintf(f, "Format specific information:\n");
bdrv_image_info_specific_dump(func_fprintf, f, info->format_specific);
}
-
- if (info->has_nocow && info->nocow) {
- func_fprintf(f, "NOCOW flag: set\n");
- }
}
# @format-specific: #optional structure supplying additional format-specific
# information (since 1.7)
#
-# @nocow: #optional info of whether NOCOW flag is set or not. (since 2.2)
-#
# Since: 1.3
#
##
'*backing-filename': 'str', '*full-backing-filename': 'str',
'*backing-filename-format': 'str', '*snapshots': ['SnapshotInfo'],
'*backing-image': 'ImageInfo',
- '*format-specific': 'ImageInfoSpecific',
- '*nocow': 'bool' } }
+ '*format-specific': 'ImageInfoSpecific' } }
##
# @ImageCheck: