From: Colin Lord <clord@redhat.com>
To: qemu-devel@nongnu.org
Cc: kwolf@redhat.com, qemu-block@nongnu.org, mreitz@redhat.com,
Colin Lord <clord@redhat.com>
Subject: [Qemu-devel] [PATCH v3 31/32] blockdev: Separate out bdrv_probe_device functions
Date: Tue, 5 Jul 2016 11:24:31 -0400 [thread overview]
Message-ID: <1467732272-23368-32-git-send-email-clord@redhat.com> (raw)
In-Reply-To: <1467732272-23368-1-git-send-email-clord@redhat.com>
This puts the bdrv_probe_device functions into their own files to
facilitate the modularization of the block drivers.
Signed-off-by: Colin Lord <clord@redhat.com>
---
block/Makefile.objs | 1 +
block/probe/host_cdrom.c | 40 +++++++++++++++++++++++++++++++++++++
block/probe/host_device.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/probe/host_cdrom.c
create mode 100644 block/probe/host_device.c
diff --git a/block/Makefile.objs b/block/Makefile.objs
index 2d2691e..3d997e7 100644
--- a/block/Makefile.objs
+++ b/block/Makefile.objs
@@ -27,6 +27,7 @@ block-obj-y += crypto.o
block-obj-y += probe/bochs.o probe/cloop.o probe/luks.o probe/dmg.o
block-obj-y += probe/parallels.o probe/qcow.o probe/qcow2.o probe/qed.o
block-obj-y += probe/raw.o probe/vdi.o probe/vhdx.o probe/vmdk.o probe/vpc.o
+block-obj-y += probe/host_device.o probe/host_cdrom.o
common-obj-y += stream.o
common-obj-y += commit.o
diff --git a/block/probe/host_cdrom.c b/block/probe/host_cdrom.c
new file mode 100644
index 0000000..1886cad
--- /dev/null
+++ b/block/probe/host_cdrom.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/probe/host_device.c b/block/probe/host_device.c
new file mode 100644
index 0000000..ebd969b
--- /dev/null
+++ b/block/probe/host_device.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 a6ad689..56b2952 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 fd23891..44cb503 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 7facb75..2732f56 100644
--- a/include/block/probe.h
+++ b/include/block/probe.h
@@ -27,5 +27,7 @@ const char *vmdk_probe(const uint8_t *buf, int buf_size, const char *filename,
int *score);
const char *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
next prev parent reply other threads:[~2016-07-05 15:25 UTC|newest]
Thread overview: 89+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-07-05 15:24 [Qemu-devel] [PATCH v3 00/32] Dynamic module loading for block drivers Colin Lord
2016-07-05 15:24 ` [Qemu-devel] [PATCH v3 01/32] blockdev: prepare iSCSI block driver for dynamic loading Colin Lord
2016-07-06 2:41 ` Fam Zheng
2016-07-05 15:24 ` [Qemu-devel] [PATCH v3 02/32] blockdev: Add dynamic generation of module_block.h Colin Lord
2016-07-06 13:17 ` Max Reitz
2016-07-06 16:49 ` Colin Lord
2016-07-05 15:24 ` [Qemu-devel] [PATCH v3 03/32] blockdev: Add dynamic module loading for block drivers Colin Lord
2016-07-06 14:01 ` Max Reitz
2016-07-05 15:24 ` [Qemu-devel] [PATCH v3 04/32] blockdev: Move bochs probe into separate file Colin Lord
2016-07-05 15:49 ` Daniel P. Berrange
2016-07-05 20:50 ` [Qemu-devel] [Qemu-block] " John Snow
2016-07-05 21:00 ` Max Reitz
2016-07-05 21:12 ` John Snow
2016-07-06 12:39 ` Max Reitz
2016-07-06 8:24 ` Kevin Wolf
2016-07-06 16:09 ` John Snow
2016-07-07 6:36 ` Markus Armbruster
2016-07-07 15:45 ` John Snow
2016-07-07 16:01 ` [Qemu-devel] " Paolo Bonzini
2016-07-07 16:14 ` John Snow
2016-07-08 9:31 ` Kevin Wolf
2016-07-07 20:32 ` [Qemu-devel] [Qemu-block] " Colin Lord
2016-07-08 9:37 ` Kevin Wolf
2016-07-08 7:17 ` Markus Armbruster
2016-07-07 15:59 ` [Qemu-devel] " Paolo Bonzini
2016-07-06 14:19 ` Max Reitz
2016-07-06 15:41 ` Max Reitz
2016-07-05 15:24 ` [Qemu-devel] [PATCH v3 05/32] blockdev: Move cloop probe to its own file Colin Lord
2016-07-06 14:33 ` Max Reitz
2016-07-05 15:24 ` [Qemu-devel] [PATCH v3 06/32] blockdev: Move luks " Colin Lord
2016-07-05 15:50 ` Daniel P. Berrange
2016-07-06 14:36 ` Max Reitz
2016-07-05 15:24 ` [Qemu-devel] [PATCH v3 07/32] blockdev: Move dmg " Colin Lord
2016-07-06 14:39 ` Max Reitz
2016-07-05 15:24 ` [Qemu-devel] [PATCH v3 08/32] blockdev: Move parallels " Colin Lord
2016-07-06 14:46 ` Max Reitz
2016-07-05 15:24 ` [Qemu-devel] [PATCH v3 09/32] blockdev: Move qcow " Colin Lord
2016-07-06 14:49 ` Max Reitz
2016-07-05 15:24 ` [Qemu-devel] [PATCH v3 10/32] blockdev: Move qcow2 " Colin Lord
2016-07-06 14:50 ` Max Reitz
2016-07-05 15:24 ` [Qemu-devel] [PATCH v3 11/32] blockdev: Move qed " Colin Lord
2016-07-06 15:16 ` Max Reitz
2016-07-05 15:24 ` [Qemu-devel] [PATCH v3 12/32] blockdev: Move raw " Colin Lord
2016-07-06 15:17 ` Max Reitz
2016-07-05 15:24 ` [Qemu-devel] [PATCH v3 13/32] blockdev: Move vdi " Colin Lord
2016-07-06 15:21 ` Max Reitz
2016-07-05 15:24 ` [Qemu-devel] [PATCH v3 14/32] blockdev: Move vhdx " Colin Lord
2016-07-06 15:22 ` Max Reitz
2016-07-05 15:24 ` [Qemu-devel] [PATCH v3 15/32] blockdev: Move vmdk " Colin Lord
2016-07-06 15:27 ` Max Reitz
2016-07-05 15:24 ` [Qemu-devel] [PATCH v3 16/32] blockdev: Move vpc " Colin Lord
2016-07-06 15:29 ` Max Reitz
2016-07-05 15:24 ` [Qemu-devel] [PATCH v3 17/32] blockdev: Separate bochs probe from its driver Colin Lord
2016-07-06 15:43 ` Max Reitz
2016-07-06 15:59 ` Max Reitz
2016-07-07 14:56 ` Colin Lord
2016-07-08 9:57 ` Kevin Wolf
2016-07-05 15:24 ` [Qemu-devel] [PATCH v3 18/32] blockdev: Separate cloop " Colin Lord
2016-07-06 16:00 ` Max Reitz
2016-07-05 15:24 ` [Qemu-devel] [PATCH v3 19/32] blockdev: Separate luks " Colin Lord
2016-07-06 16:03 ` Max Reitz
2016-07-05 15:24 ` [Qemu-devel] [PATCH v3 20/32] blockdev: Separate dmg " Colin Lord
2016-07-06 16:05 ` Max Reitz
2016-07-05 15:24 ` [Qemu-devel] [PATCH v3 21/32] blockdev: Separate parallels " Colin Lord
2016-07-06 16:08 ` Max Reitz
2016-07-05 15:24 ` [Qemu-devel] [PATCH v3 22/32] blockdev: Separate qcow " Colin Lord
2016-07-06 16:09 ` Max Reitz
2016-07-05 15:24 ` [Qemu-devel] [PATCH v3 23/32] blockdev: Separate qcow2 " Colin Lord
2016-07-06 16:10 ` Max Reitz
2016-07-05 15:24 ` [Qemu-devel] [PATCH v3 24/32] blockdev: Separate qed " Colin Lord
2016-07-06 16:11 ` Max Reitz
2016-07-05 15:24 ` [Qemu-devel] [PATCH v3 25/32] blockdev: Separate raw " Colin Lord
2016-07-06 16:11 ` Max Reitz
2016-07-05 15:24 ` [Qemu-devel] [PATCH v3 26/32] blockdev: Separate vdi " Colin Lord
2016-07-06 16:12 ` Max Reitz
2016-07-05 15:24 ` [Qemu-devel] [PATCH v3 27/32] blockdev: Separate vhdx " Colin Lord
2016-07-06 16:12 ` Max Reitz
2016-07-05 15:24 ` [Qemu-devel] [PATCH v3 28/32] blockdev: Separate vmdk " Colin Lord
2016-07-06 16:13 ` Max Reitz
2016-07-05 15:24 ` [Qemu-devel] [PATCH v3 29/32] blockdev: Separate vpc " Colin Lord
2016-07-06 16:14 ` Max Reitz
2016-07-05 15:24 ` [Qemu-devel] [PATCH v3 30/32] blockdev: Remove the .bdrv_probe field from BlockDrivers Colin Lord
2016-07-06 16:17 ` Max Reitz
2016-07-05 15:24 ` Colin Lord [this message]
2016-07-06 16:29 ` [Qemu-devel] [PATCH v3 31/32] blockdev: Separate out bdrv_probe_device functions Max Reitz
2016-07-05 15:24 ` [Qemu-devel] [PATCH v3 32/32] blockdev: Remove bdrv_probe_device field from BlockDriver Colin Lord
2016-07-06 16:44 ` Max Reitz
2016-07-07 20:01 ` [Qemu-devel] [Qemu-block] [PATCH v3 00/32] Dynamic module loading for block drivers John Snow
2016-07-14 12:17 ` Stefan Hajnoczi
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1467732272-23368-32-git-send-email-clord@redhat.com \
--to=clord@redhat.com \
--cc=kwolf@redhat.com \
--cc=mreitz@redhat.com \
--cc=qemu-block@nongnu.org \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).