mirror of https://github.com/xemu-project/xemu.git
block: pass OnOffAuto instead of bool to block_acct_setup()
We would have one more place for block_acct_setup() calling, which should not corrupt original value. Signed-off-by: Denis V. Lunev <den@openvz.org> Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru> CC: Peter Krempa <pkrempa@redhat.com> CC: Markus Armbruster <armbru@redhat.com> CC: John Snow <jsnow@redhat.com> CC: Kevin Wolf <kwolf@redhat.com> CC: Hanna Reitz <hreitz@redhat.com> Message-Id: <20220824095044.166009-2-den@openvz.org> Reviewed-by: Kevin Wolf <kwolf@redhat.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
This commit is contained in:
parent
7f118b433a
commit
b2aaf35477
|
@ -40,11 +40,25 @@ void block_acct_init(BlockAcctStats *stats)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void block_acct_setup(BlockAcctStats *stats, bool account_invalid,
|
static bool bool_from_onoffauto(OnOffAuto val, bool def)
|
||||||
bool account_failed)
|
|
||||||
{
|
{
|
||||||
stats->account_invalid = account_invalid;
|
switch (val) {
|
||||||
stats->account_failed = account_failed;
|
case ON_OFF_AUTO_AUTO:
|
||||||
|
return def;
|
||||||
|
case ON_OFF_AUTO_ON:
|
||||||
|
return true;
|
||||||
|
case ON_OFF_AUTO_OFF:
|
||||||
|
return false;
|
||||||
|
default:
|
||||||
|
abort();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void block_acct_setup(BlockAcctStats *stats, enum OnOffAuto account_invalid,
|
||||||
|
enum OnOffAuto account_failed)
|
||||||
|
{
|
||||||
|
stats->account_invalid = bool_from_onoffauto(account_invalid, true);
|
||||||
|
stats->account_failed = bool_from_onoffauto(account_failed, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
void block_acct_cleanup(BlockAcctStats *stats)
|
void block_acct_cleanup(BlockAcctStats *stats)
|
||||||
|
|
17
blockdev.c
17
blockdev.c
|
@ -455,6 +455,17 @@ static void extract_common_blockdev_options(QemuOpts *opts, int *bdrv_flags,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static OnOffAuto account_get_opt(QemuOpts *opts, const char *name)
|
||||||
|
{
|
||||||
|
if (!qemu_opt_find(opts, name)) {
|
||||||
|
return ON_OFF_AUTO_AUTO;
|
||||||
|
}
|
||||||
|
if (qemu_opt_get_bool(opts, name, true)) {
|
||||||
|
return ON_OFF_AUTO_ON;
|
||||||
|
}
|
||||||
|
return ON_OFF_AUTO_OFF;
|
||||||
|
}
|
||||||
|
|
||||||
/* Takes the ownership of bs_opts */
|
/* Takes the ownership of bs_opts */
|
||||||
static BlockBackend *blockdev_init(const char *file, QDict *bs_opts,
|
static BlockBackend *blockdev_init(const char *file, QDict *bs_opts,
|
||||||
Error **errp)
|
Error **errp)
|
||||||
|
@ -462,7 +473,7 @@ static BlockBackend *blockdev_init(const char *file, QDict *bs_opts,
|
||||||
const char *buf;
|
const char *buf;
|
||||||
int bdrv_flags = 0;
|
int bdrv_flags = 0;
|
||||||
int on_read_error, on_write_error;
|
int on_read_error, on_write_error;
|
||||||
bool account_invalid, account_failed;
|
OnOffAuto account_invalid, account_failed;
|
||||||
bool writethrough, read_only;
|
bool writethrough, read_only;
|
||||||
BlockBackend *blk;
|
BlockBackend *blk;
|
||||||
BlockDriverState *bs;
|
BlockDriverState *bs;
|
||||||
|
@ -496,8 +507,8 @@ static BlockBackend *blockdev_init(const char *file, QDict *bs_opts,
|
||||||
/* extract parameters */
|
/* extract parameters */
|
||||||
snapshot = qemu_opt_get_bool(opts, "snapshot", 0);
|
snapshot = qemu_opt_get_bool(opts, "snapshot", 0);
|
||||||
|
|
||||||
account_invalid = qemu_opt_get_bool(opts, "stats-account-invalid", true);
|
account_invalid = account_get_opt(opts, "stats-account-invalid");
|
||||||
account_failed = qemu_opt_get_bool(opts, "stats-account-failed", true);
|
account_failed = account_get_opt(opts, "stats-account-failed");
|
||||||
|
|
||||||
writethrough = !qemu_opt_get_bool(opts, BDRV_OPT_CACHE_WB, true);
|
writethrough = !qemu_opt_get_bool(opts, BDRV_OPT_CACHE_WB, true);
|
||||||
|
|
||||||
|
|
|
@ -27,7 +27,7 @@
|
||||||
|
|
||||||
#include "qemu/timed-average.h"
|
#include "qemu/timed-average.h"
|
||||||
#include "qemu/thread.h"
|
#include "qemu/thread.h"
|
||||||
#include "qapi/qapi-builtin-types.h"
|
#include "qapi/qapi-types-common.h"
|
||||||
|
|
||||||
typedef struct BlockAcctTimedStats BlockAcctTimedStats;
|
typedef struct BlockAcctTimedStats BlockAcctTimedStats;
|
||||||
typedef struct BlockAcctStats BlockAcctStats;
|
typedef struct BlockAcctStats BlockAcctStats;
|
||||||
|
@ -100,8 +100,8 @@ typedef struct BlockAcctCookie {
|
||||||
} BlockAcctCookie;
|
} BlockAcctCookie;
|
||||||
|
|
||||||
void block_acct_init(BlockAcctStats *stats);
|
void block_acct_init(BlockAcctStats *stats);
|
||||||
void block_acct_setup(BlockAcctStats *stats, bool account_invalid,
|
void block_acct_setup(BlockAcctStats *stats, enum OnOffAuto account_invalid,
|
||||||
bool account_failed);
|
enum OnOffAuto account_failed);
|
||||||
void block_acct_cleanup(BlockAcctStats *stats);
|
void block_acct_cleanup(BlockAcctStats *stats);
|
||||||
void block_acct_add_interval(BlockAcctStats *stats, unsigned interval_length);
|
void block_acct_add_interval(BlockAcctStats *stats, unsigned interval_length);
|
||||||
BlockAcctTimedStats *block_acct_interval_next(BlockAcctStats *stats,
|
BlockAcctTimedStats *block_acct_interval_next(BlockAcctStats *stats,
|
||||||
|
|
Loading…
Reference in New Issue