[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v4 31/32] blockdev: Separate out bdrv_probe_device f
From: |
Colin Lord |
Subject: |
[Qemu-devel] [PATCH v4 31/32] blockdev: Separate out bdrv_probe_device functions |
Date: |
Thu, 14 Jul 2016 15:03:27 -0400 |
This puts the bdrv_probe_device functions into their own files to
facilitate the modularization of the block drivers.
Signed-off-by: Colin Lord <address@hidden>
Reviewed-by: Max Reitz <address@hidden>
---
block/Makefile.objs | 1 +
block/host_cdrom-probe.c | 40 +++++++++++++++++++++++++++++++++++++
block/host_device-probe.c | 30 ++++++++++++++++++++++++++++
block/raw-posix.c | 51 +----------------------------------------------
block/raw-win32.c | 10 +---------
include/block/probe.h | 2 ++
6 files changed, 75 insertions(+), 59 deletions(-)
create mode 100644 block/host_cdrom-probe.c
create mode 100644 block/host_device-probe.c
diff --git a/block/Makefile.objs b/block/Makefile.objs
index 6512073..fbc57f9 100644
--- a/block/Makefile.objs
+++ b/block/Makefile.objs
@@ -27,6 +27,7 @@ block-obj-y += crypto.o
block-obj-y += bochs-probe.o cloop-probe.o crypto-probe.o dmg-probe.o
block-obj-y += parallels-probe.o qcow-probe.o qcow2-probe.o qed-probe.o
block-obj-y += raw-probe.o vdi-probe.o vhdx-probe.o vmdk-probe.o vpc-probe.o
+block-obj-y += host_device-probe.o host_cdrom-probe.o
common-obj-y += stream.o
common-obj-y += backup.o
diff --git a/block/host_cdrom-probe.c b/block/host_cdrom-probe.c
new file mode 100644
index 0000000..1886cad
--- /dev/null
+++ b/block/host_cdrom-probe.c
@@ -0,0 +1,40 @@
+#include "qemu/osdep.h"
+#include "block/probe.h"
+
+#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
+int cdrom_probe_device(const char *filename)
+{
+ if (strstart(filename, "/dev/cd", NULL) ||
+ strstart(filename, "/dev/acd", NULL))
+ return 100;
+ return 0;
+}
+#elif defined(__linux__)
+#include <sys/ioctl.h>
+#include <linux/cdrom.h>
+int cdrom_probe_device(const char *filename)
+{
+ int fd, ret;
+ int prio = 0;
+ struct stat st;
+
+ fd = qemu_open(filename, O_RDONLY | O_NONBLOCK);
+ if (fd < 0) {
+ goto out;
+ }
+ ret = fstat(fd, &st);
+ if (ret == -1 || !S_ISBLK(st.st_mode)) {
+ goto outc;
+ }
+
+ /* Attempt to detect via a CDROM specific ioctl */
+ ret = ioctl(fd, CDROM_DRIVE_STATUS, CDSL_CURRENT);
+ if (ret >= 0)
+ prio = 100;
+
+outc:
+ qemu_close(fd);
+out:
+ return prio;
+}
+#endif
diff --git a/block/host_device-probe.c b/block/host_device-probe.c
new file mode 100644
index 0000000..ebd969b
--- /dev/null
+++ b/block/host_device-probe.c
@@ -0,0 +1,30 @@
+#include "qemu/osdep.h"
+#include "block/probe.h"
+#include "qemu/cutils.h"
+
+#ifdef _WIN32
+int hdev_probe_device(const char *filename)
+{
+ if (strstart(filename, "/dev/cdrom", NULL))
+ return 100;
+ if (is_windows_drive(filename))
+ return 100;
+ return 0;
+}
+#else
+int hdev_probe_device(const char *filename)
+{
+ struct stat st;
+
+ /* allow a dedicated CD-ROM driver to match with a higher priority */
+ if (strstart(filename, "/dev/cdrom", NULL))
+ return 50;
+
+ if (stat(filename, &st) >= 0 &&
+ (S_ISCHR(st.st_mode) || S_ISBLK(st.st_mode))) {
+ return 100;
+ }
+
+ return 0;
+}
+#endif
diff --git a/block/raw-posix.c b/block/raw-posix.c
index e321bcd..f42b74a 100644
--- a/block/raw-posix.c
+++ b/block/raw-posix.c
@@ -28,6 +28,7 @@
#include "qemu/timer.h"
#include "qemu/log.h"
#include "block/block_int.h"
+#include "block/probe.h"
#include "qemu/module.h"
#include "trace.h"
#include "block/thread-pool.h"
@@ -2084,22 +2085,6 @@ static void print_unmounting_directions(const char
*file_name)
#endif /* defined(__APPLE__) && defined(__MACH__) */
-static int hdev_probe_device(const char *filename)
-{
- struct stat st;
-
- /* allow a dedicated CD-ROM driver to match with a higher priority */
- if (strstart(filename, "/dev/cdrom", NULL))
- return 50;
-
- if (stat(filename, &st) >= 0 &&
- (S_ISCHR(st.st_mode) || S_ISBLK(st.st_mode))) {
- return 100;
- }
-
- return 0;
-}
-
static int check_hdev_writable(BDRVRawState *s)
{
#if defined(BLKROGET)
@@ -2441,32 +2426,6 @@ static int cdrom_open(BlockDriverState *bs, QDict
*options, int flags,
return raw_open_common(bs, options, flags, O_NONBLOCK, errp);
}
-static int cdrom_probe_device(const char *filename)
-{
- int fd, ret;
- int prio = 0;
- struct stat st;
-
- fd = qemu_open(filename, O_RDONLY | O_NONBLOCK);
- if (fd < 0) {
- goto out;
- }
- ret = fstat(fd, &st);
- if (ret == -1 || !S_ISBLK(st.st_mode)) {
- goto outc;
- }
-
- /* Attempt to detect via a CDROM specific ioctl */
- ret = ioctl(fd, CDROM_DRIVE_STATUS, CDSL_CURRENT);
- if (ret >= 0)
- prio = 100;
-
-outc:
- qemu_close(fd);
-out:
- return prio;
-}
-
static bool cdrom_is_inserted(BlockDriverState *bs)
{
BDRVRawState *s = bs->opaque;
@@ -2565,14 +2524,6 @@ static int cdrom_open(BlockDriverState *bs, QDict
*options, int flags,
return 0;
}
-static int cdrom_probe_device(const char *filename)
-{
- if (strstart(filename, "/dev/cd", NULL) ||
- strstart(filename, "/dev/acd", NULL))
- return 100;
- return 0;
-}
-
static int cdrom_reopen(BlockDriverState *bs)
{
BDRVRawState *s = bs->opaque;
diff --git a/block/raw-win32.c b/block/raw-win32.c
index 62edb1a..5afab2a 100644
--- a/block/raw-win32.c
+++ b/block/raw-win32.c
@@ -26,6 +26,7 @@
#include "qemu/cutils.h"
#include "qemu/timer.h"
#include "block/block_int.h"
+#include "block/probe.h"
#include "qemu/module.h"
#include "raw-aio.h"
#include "trace.h"
@@ -615,15 +616,6 @@ static int find_device_type(BlockDriverState *bs, const
char *filename)
}
}
-static int hdev_probe_device(const char *filename)
-{
- if (strstart(filename, "/dev/cdrom", NULL))
- return 100;
- if (is_windows_drive(filename))
- return 100;
- return 0;
-}
-
static void hdev_parse_filename(const char *filename, QDict *options,
Error **errp)
{
diff --git a/include/block/probe.h b/include/block/probe.h
index b320b20..4d5feb4 100644
--- a/include/block/probe.h
+++ b/include/block/probe.h
@@ -27,5 +27,7 @@ const char *bdrv_vmdk_probe(const uint8_t *buf, int buf_size,
const char *filename, int *score);
const char *bdrv_vpc_probe(const uint8_t *buf, int buf_size,
const char *filename, int *score);
+int hdev_probe_device(const char *filename);
+int cdrom_probe_device(const char *filename);
#endif
--
2.5.5
- [Qemu-devel] [PATCH v4 25/32] blockdev: Separate raw probe from its driver, (continued)
- [Qemu-devel] [PATCH v4 25/32] blockdev: Separate raw probe from its driver, Colin Lord, 2016/07/14
- [Qemu-devel] [PATCH v4 17/32] blockdev: Separate bochs probe from its driver, Colin Lord, 2016/07/14
- [Qemu-devel] [PATCH v4 19/32] blockdev: Separate luks probe from its driver, Colin Lord, 2016/07/14
- [Qemu-devel] [PATCH v4 26/32] blockdev: Separate vdi probe from its driver, Colin Lord, 2016/07/14
- [Qemu-devel] [PATCH v4 21/32] blockdev: Separate parallels probe from its driver, Colin Lord, 2016/07/14
- [Qemu-devel] [PATCH v4 14/32] blockdev: Move vhdx probe to its own file, Colin Lord, 2016/07/14
- [Qemu-devel] [PATCH v4 16/32] blockdev: Move vpc probe to its own file, Colin Lord, 2016/07/14
- [Qemu-devel] [PATCH v4 27/32] blockdev: Separate vhdx probe from its driver, Colin Lord, 2016/07/14
- [Qemu-devel] [PATCH v4 31/32] blockdev: Separate out bdrv_probe_device functions,
Colin Lord <=
- [Qemu-devel] [PATCH v4 15/32] blockdev: Move vmdk probe to its own file, Colin Lord, 2016/07/14
- [Qemu-devel] [PATCH v4 20/32] blockdev: Separate dmg probe from its driver, Colin Lord, 2016/07/14
- [Qemu-devel] [PATCH v4 30/32] blockdev: Remove the .bdrv_probe field from BlockDrivers, Colin Lord, 2016/07/14
- [Qemu-devel] [PATCH v4 23/32] blockdev: Separate qcow2 probe from its driver, Colin Lord, 2016/07/14
- [Qemu-devel] [PATCH v4 18/32] blockdev: Separate cloop probe from its driver, Colin Lord, 2016/07/14
- [Qemu-devel] [PATCH v4 22/32] blockdev: Separate qcow probe from its driver, Colin Lord, 2016/07/14
- [Qemu-devel] [PATCH v4 32/32] blockdev: Remove bdrv_probe_device field from BlockDriver, Colin Lord, 2016/07/14
- [Qemu-devel] [PATCH v4 29/32] blockdev: Separate vpc probe from its driver, Colin Lord, 2016/07/14
- [Qemu-devel] [PATCH v4 28/32] blockdev: Separate vmdk probe from its driver, Colin Lord, 2016/07/14
- Re: [Qemu-devel] [PATCH v4 00/32] Dynamic module loading for block drivers, Paolo Bonzini, 2016/07/19