mirror of
https://github.com/qemu/qemu.git
synced 2024-11-24 19:33:39 +08:00
4c7b7e9b94
qemu-io should behave like a guest, therefore it should use BlockBackend to access the block layer. There are a couple of places where that is infeasible: First, the bdrv_debug_* functions could theoretically be mirrored in the BlockBackend, but since these are functions internal to the block layer, they should not be visible externally (qemu-io as a test tool is exempt from this). Second, bdrv_get_info() and bdrv_get_specific_info() work on a single BDS alone, therefore they should stay BDS-specific. Third, bdrv_is_allocated() mainly works on a single BDS as well. Some data may be passed through from the BDS's file (if sectors which are apparently allocated in the file are not really allocated there but just zero). [Fixed conflicts around block_acct_start() usage from Fam Zheng's "qemu-io: Account IO by aio_read and aio_write" commit. Use BlockBackend and blk_get_stats() instead of BlockDriverState. --Stefan] Signed-off-by: Max Reitz <mreitz@redhat.com> Reviewed-by: Eric Blake <eblake@redhat.com> Message-id: 1423162705-32065-14-git-send-email-mreitz@redhat.com Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
52 lines
1.5 KiB
C
52 lines
1.5 KiB
C
/*
|
|
* Copyright (c) 2000-2005 Silicon Graphics, Inc.
|
|
* All Rights Reserved.
|
|
*
|
|
* This program is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU General Public License as
|
|
* published by the Free Software Foundation.
|
|
*
|
|
* This program is distributed in the hope that it would be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
#ifndef QEMU_IO_H
|
|
#define QEMU_IO_H
|
|
|
|
#include "qemu-common.h"
|
|
|
|
#define CMD_FLAG_GLOBAL ((int)0x80000000) /* don't iterate "args" */
|
|
|
|
typedef int (*cfunc_t)(BlockBackend *blk, int argc, char **argv);
|
|
typedef void (*helpfunc_t)(void);
|
|
|
|
typedef struct cmdinfo {
|
|
const char* name;
|
|
const char* altname;
|
|
cfunc_t cfunc;
|
|
int argmin;
|
|
int argmax;
|
|
int canpush;
|
|
int flags;
|
|
const char *args;
|
|
const char *oneline;
|
|
helpfunc_t help;
|
|
} cmdinfo_t;
|
|
|
|
extern bool qemuio_misalign;
|
|
|
|
bool qemuio_command(BlockBackend *blk, const char *cmd);
|
|
|
|
void qemuio_add_command(const cmdinfo_t *ci);
|
|
int qemuio_command_usage(const cmdinfo_t *ci);
|
|
void qemuio_complete_command(const char *input,
|
|
void (*fn)(const char *cmd, void *opaque),
|
|
void *opaque);
|
|
|
|
#endif /* QEMU_IO_H */
|