mirror of
https://github.com/Motorhead1991/qemu.git
synced 2026-03-04 09:04:39 -07:00
Block layer patches:
- Block graph change fixes (avoid loops, cope with non-tree graphs)
- bdrv_set_aio_context() related fixes
- HMP snapshot commands: Use only tag, not the ID to identify snapshots
- qmeu-img, commit: Error path fixes
- block/nvme: Build fix for gcc 9
- MAINTAINERS updates
- Fix various issues with bdrv_refresh_filename()
- Fix various iotests
- Include LUKS overhead in qemu-img measure for qcow2
- A fix for vmdk's image creation interface
-----BEGIN PGP SIGNATURE-----
iQIcBAABAgAGBQJcc/knAAoJEH8JsnLIjy/WptQP/3F8Lh52H4egXaP7NUUuDjQM
AhqhuDAp/EZBS+xim9kLTogNJADe/rMWdSX/YB5aLpSPYbjasC66NgaLhd6QewgQ
VIcsLUdlYAyZ5ZjJytimfMTLwm1X02RmVIe55y52DTY8LlfViZzOlf3qwqPm00ao
EJB2cl8UJLM+PVEu59cCw3R0/06LY+WIJRB32d3tnCBRTkaJwfR9h4lrp/juVcFZ
U+2eWU68KMbUHSYiWANowN+KRV3uPY4HVA98v3F0vDmcBxlVHOeBg6S+PcT7tK8p
huzCMwcdwUyPMJgVs/+WBtUnbG0jN6SHUYmFLz859UMVgBnCw5tzBMf8qw1wOA4A
Iw+zor27Pxj4IlxcLPp5f97YZ8k9acdMR2VKPH6xLJZ1JF+sKa54RfzESd5EJeIj
Mfcp773H0lIaWcFJ6RY1F0L1E1ta7QigwNBiWMdYfh0a0EWHnDvGyYeaSPYEQ+rl
e8bZOcfrYwVI7DTDiZOIkGA9D8DXEPDNp+sl6s1DxeY69D0NNaXTtCPqFNNAbFbd
20uD7yDRZlWq32cQB/K9D5cSkZRSOzdUpLfLU3nQU2+dz11x6OpM6m7DVboSrztD
1HtPPDzDEvH5dOP7ibd60s+ntjkSiNfNkUgnuVrBE/d/PocC1eHHpZt5V7f43Ofb
RxVwH5+smzQ9nsNBfQR0
=gaah
-----END PGP SIGNATURE-----
Merge remote-tracking branch 'remotes/kevin/tags/for-upstream' into staging
Block layer patches:
- Block graph change fixes (avoid loops, cope with non-tree graphs)
- bdrv_set_aio_context() related fixes
- HMP snapshot commands: Use only tag, not the ID to identify snapshots
- qmeu-img, commit: Error path fixes
- block/nvme: Build fix for gcc 9
- MAINTAINERS updates
- Fix various issues with bdrv_refresh_filename()
- Fix various iotests
- Include LUKS overhead in qemu-img measure for qcow2
- A fix for vmdk's image creation interface
# gpg: Signature made Mon 25 Feb 2019 14:18:15 GMT
# gpg: using RSA key 7F09B272C88F2FD6
# gpg: Good signature from "Kevin Wolf <kwolf@redhat.com>" [full]
# Primary key fingerprint: DC3D EB15 9A9A F95D 3D74 56FE 7F09 B272 C88F 2FD6
* remotes/kevin/tags/for-upstream: (71 commits)
iotests: Skip 211 on insufficient memory
vmdk: false positive of compat6 with hwversion not set
iotests: add LUKS payload overhead to 178 qemu-img measure test
qcow2: include LUKS payload overhead in qemu-img measure
iotests.py: s/_/-/g on keys in qmp_log()
iotests: Let 045 be run concurrently
iotests: Filter SSH paths
iotests.py: Filter filename in any string value
iotests.py: Add is_str()
iotests: Fix 207 to use QMP filters for qmp_log
iotests: Fix 232 for LUKS
iotests: Remove superfluous rm from 232
iotests: Fix 237 for Python 2.x
iotests: Re-add filename filters
iotests: Test json:{} filenames of internal BDSs
block: BDS options may lack the "driver" option
block/null: Generate filename even with latency-ns
block/curl: Implement bdrv_refresh_filename()
block/curl: Harmonize option defaults
block/nvme: Fix bdrv_refresh_filename()
...
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
commit
adf2e451f3
83 changed files with 2202 additions and 708 deletions
|
|
@ -485,21 +485,17 @@ void bdrv_round_to_clusters(BlockDriverState *bs,
|
|||
int64_t *cluster_offset,
|
||||
int64_t *cluster_bytes);
|
||||
|
||||
const char *bdrv_get_encrypted_filename(BlockDriverState *bs);
|
||||
void bdrv_get_backing_filename(BlockDriverState *bs,
|
||||
char *filename, int filename_size);
|
||||
void bdrv_get_full_backing_filename(BlockDriverState *bs,
|
||||
char *dest, size_t sz, Error **errp);
|
||||
void bdrv_get_full_backing_filename_from_filename(const char *backed,
|
||||
const char *backing,
|
||||
char *dest, size_t sz,
|
||||
Error **errp);
|
||||
char *bdrv_get_full_backing_filename(BlockDriverState *bs, Error **errp);
|
||||
char *bdrv_get_full_backing_filename_from_filename(const char *backed,
|
||||
const char *backing,
|
||||
Error **errp);
|
||||
char *bdrv_dirname(BlockDriverState *bs, Error **errp);
|
||||
|
||||
int path_has_protocol(const char *path);
|
||||
int path_is_absolute(const char *path);
|
||||
void path_combine(char *dest, int dest_size,
|
||||
const char *base_path,
|
||||
const char *filename);
|
||||
char *path_combine(const char *base_path, const char *filename);
|
||||
|
||||
int bdrv_readv_vmstate(BlockDriverState *bs, QEMUIOVector *qiov, int64_t pos);
|
||||
int bdrv_writev_vmstate(BlockDriverState *bs, QEMUIOVector *qiov, int64_t pos);
|
||||
|
|
|
|||
|
|
@ -139,7 +139,42 @@ struct BlockDriver {
|
|||
Error **errp);
|
||||
int (*bdrv_make_empty)(BlockDriverState *bs);
|
||||
|
||||
void (*bdrv_refresh_filename)(BlockDriverState *bs, QDict *options);
|
||||
/*
|
||||
* Refreshes the bs->exact_filename field. If that is impossible,
|
||||
* bs->exact_filename has to be left empty.
|
||||
*/
|
||||
void (*bdrv_refresh_filename)(BlockDriverState *bs);
|
||||
|
||||
/*
|
||||
* Gathers the open options for all children into @target.
|
||||
* A simple format driver (without backing file support) might
|
||||
* implement this function like this:
|
||||
*
|
||||
* QINCREF(bs->file->bs->full_open_options);
|
||||
* qdict_put(target, "file", bs->file->bs->full_open_options);
|
||||
*
|
||||
* If not specified, the generic implementation will simply put
|
||||
* all children's options under their respective name.
|
||||
*
|
||||
* @backing_overridden is true when bs->backing seems not to be
|
||||
* the child that would result from opening bs->backing_file.
|
||||
* Therefore, if it is true, the backing child's options should be
|
||||
* gathered; otherwise, there is no need since the backing child
|
||||
* is the one implied by the image header.
|
||||
*
|
||||
* Note that ideally this function would not be needed. Every
|
||||
* block driver which implements it is probably doing something
|
||||
* shady regarding its runtime option structure.
|
||||
*/
|
||||
void (*bdrv_gather_child_options)(BlockDriverState *bs, QDict *target,
|
||||
bool backing_overridden);
|
||||
|
||||
/*
|
||||
* Returns an allocated string which is the directory name of this BDS: It
|
||||
* will be used to make relative filenames absolute by prepending this
|
||||
* function's return value to them.
|
||||
*/
|
||||
char *(*bdrv_dirname)(BlockDriverState *bs, Error **errp);
|
||||
|
||||
/* aio */
|
||||
BlockAIOCB *(*bdrv_aio_preadv)(BlockDriverState *bs,
|
||||
|
|
@ -510,6 +545,13 @@ struct BlockDriver {
|
|||
void (*bdrv_register_buf)(BlockDriverState *bs, void *host, size_t size);
|
||||
void (*bdrv_unregister_buf)(BlockDriverState *bs, void *host);
|
||||
QLIST_ENTRY(BlockDriver) list;
|
||||
|
||||
/* Pointer to a NULL-terminated array of names of strong options
|
||||
* that can be specified for bdrv_open(). A strong option is one
|
||||
* that changes the data of a BDS.
|
||||
* If this pointer is NULL, the array is considered empty.
|
||||
* "filename" and "driver" are always considered strong. */
|
||||
const char *const *strong_runtime_opts;
|
||||
};
|
||||
|
||||
typedef struct BlockLimits {
|
||||
|
|
@ -662,6 +704,11 @@ struct BdrvChild {
|
|||
*/
|
||||
uint64_t shared_perm;
|
||||
|
||||
/* backup of permissions during permission update procedure */
|
||||
bool has_backup_perm;
|
||||
uint64_t backup_perm;
|
||||
uint64_t backup_shared_perm;
|
||||
|
||||
QLIST_ENTRY(BdrvChild) next;
|
||||
QLIST_ENTRY(BdrvChild) next_parent;
|
||||
};
|
||||
|
|
@ -697,6 +744,10 @@ struct BlockDriverState {
|
|||
char filename[PATH_MAX];
|
||||
char backing_file[PATH_MAX]; /* if non zero, the image is a diff of
|
||||
this file image */
|
||||
/* The backing filename indicated by the image header; if we ever
|
||||
* open this file, then this is replaced by the resulting BDS's
|
||||
* filename (i.e. after a bdrv_refresh_filename() run). */
|
||||
char auto_backing_file[PATH_MAX];
|
||||
char backing_format[16]; /* if non-zero and backing_file exists */
|
||||
|
||||
QDict *full_open_options;
|
||||
|
|
|
|||
|
|
@ -300,7 +300,8 @@ int nbd_receive_export_list(QIOChannel *ioc, QCryptoTLSCreds *tlscreds,
|
|||
int nbd_init(int fd, QIOChannelSocket *sioc, NBDExportInfo *info,
|
||||
Error **errp);
|
||||
int nbd_send_request(QIOChannel *ioc, NBDRequest *request);
|
||||
int nbd_receive_reply(QIOChannel *ioc, NBDReply *reply, Error **errp);
|
||||
int coroutine_fn nbd_receive_reply(BlockDriverState *bs, QIOChannel *ioc,
|
||||
NBDReply *reply, Error **errp);
|
||||
int nbd_client(int fd);
|
||||
int nbd_disconnect(int fd);
|
||||
int nbd_errno_to_system_errno(int err);
|
||||
|
|
|
|||
|
|
@ -61,9 +61,6 @@ int bdrv_snapshot_delete(BlockDriverState *bs,
|
|||
const char *snapshot_id,
|
||||
const char *name,
|
||||
Error **errp);
|
||||
int bdrv_snapshot_delete_by_id_or_name(BlockDriverState *bs,
|
||||
const char *id_or_name,
|
||||
Error **errp);
|
||||
int bdrv_snapshot_list(BlockDriverState *bs,
|
||||
QEMUSnapshotInfo **psn_info);
|
||||
int bdrv_snapshot_load_tmp(BlockDriverState *bs,
|
||||
|
|
|
|||
|
|
@ -739,10 +739,13 @@ void qio_channel_detach_aio_context(QIOChannel *ioc);
|
|||
* addition, no two coroutine can be waiting on the same condition
|
||||
* and channel at the same time.
|
||||
*
|
||||
* This must only be called from coroutine context
|
||||
* This must only be called from coroutine context. It is safe to
|
||||
* reenter the coroutine externally while it is waiting; in this
|
||||
* case the function will return even if @condition is not yet
|
||||
* available.
|
||||
*/
|
||||
void qio_channel_yield(QIOChannel *ioc,
|
||||
GIOCondition condition);
|
||||
void coroutine_fn qio_channel_yield(QIOChannel *ioc,
|
||||
GIOCondition condition);
|
||||
|
||||
/**
|
||||
* qio_channel_wait:
|
||||
|
|
|
|||
|
|
@ -156,6 +156,8 @@ int blk_co_pdiscard(BlockBackend *blk, int64_t offset, int bytes);
|
|||
int blk_co_flush(BlockBackend *blk);
|
||||
int blk_flush(BlockBackend *blk);
|
||||
int blk_commit_all(void);
|
||||
void blk_inc_in_flight(BlockBackend *blk);
|
||||
void blk_dec_in_flight(BlockBackend *blk);
|
||||
void blk_drain(BlockBackend *blk);
|
||||
void blk_drain_all(void);
|
||||
void blk_set_on_error(BlockBackend *blk, BlockdevOnError on_read_error,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue