[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 13/30] qemu-io: add preallocate mode parameter for truncate comman
From: |
Max Reitz |
Subject: |
[PULL 13/30] qemu-io: add preallocate mode parameter for truncate command |
Date: |
Fri, 18 Dec 2020 16:12:32 +0100 |
From: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
This will be used in further test.
Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
Reviewed-by: Max Reitz <mreitz@redhat.com>
Message-Id: <20201021145859.11201-10-vsementsov@virtuozzo.com>
Signed-off-by: Max Reitz <mreitz@redhat.com>
---
qemu-io-cmds.c | 46 ++++++++++++++++++++++++++++++++--------------
1 file changed, 32 insertions(+), 14 deletions(-)
diff --git a/qemu-io-cmds.c b/qemu-io-cmds.c
index 4153f1c0b0..97611969cb 100644
--- a/qemu-io-cmds.c
+++ b/qemu-io-cmds.c
@@ -1698,13 +1698,42 @@ static const cmdinfo_t flush_cmd = {
.oneline = "flush all in-core file state to disk",
};
+static int truncate_f(BlockBackend *blk, int argc, char **argv);
+static const cmdinfo_t truncate_cmd = {
+ .name = "truncate",
+ .altname = "t",
+ .cfunc = truncate_f,
+ .perm = BLK_PERM_WRITE | BLK_PERM_RESIZE,
+ .argmin = 1,
+ .argmax = 3,
+ .args = "[-m prealloc_mode] off",
+ .oneline = "truncates the current file at the given offset",
+};
+
static int truncate_f(BlockBackend *blk, int argc, char **argv)
{
Error *local_err = NULL;
int64_t offset;
- int ret;
+ int c, ret;
+ PreallocMode prealloc = PREALLOC_MODE_OFF;
- offset = cvtnum(argv[1]);
+ while ((c = getopt(argc, argv, "m:")) != -1) {
+ switch (c) {
+ case 'm':
+ prealloc = qapi_enum_parse(&PreallocMode_lookup, optarg,
+ PREALLOC_MODE__MAX, NULL);
+ if (prealloc == PREALLOC_MODE__MAX) {
+ error_report("Invalid preallocation mode '%s'", optarg);
+ return -EINVAL;
+ }
+ break;
+ default:
+ qemuio_command_usage(&truncate_cmd);
+ return -EINVAL;
+ }
+ }
+
+ offset = cvtnum(argv[optind]);
if (offset < 0) {
print_cvtnum_err(offset, argv[1]);
return offset;
@@ -1715,7 +1744,7 @@ static int truncate_f(BlockBackend *blk, int argc, char
**argv)
* exact=true. It is better to err on the "emit more errors" side
* than to be overly permissive.
*/
- ret = blk_truncate(blk, offset, false, PREALLOC_MODE_OFF, 0, &local_err);
+ ret = blk_truncate(blk, offset, false, prealloc, 0, &local_err);
if (ret < 0) {
error_report_err(local_err);
return ret;
@@ -1724,17 +1753,6 @@ static int truncate_f(BlockBackend *blk, int argc, char
**argv)
return 0;
}
-static const cmdinfo_t truncate_cmd = {
- .name = "truncate",
- .altname = "t",
- .cfunc = truncate_f,
- .perm = BLK_PERM_WRITE | BLK_PERM_RESIZE,
- .argmin = 1,
- .argmax = 1,
- .args = "off",
- .oneline = "truncates the current file at the given offset",
-};
-
static int length_f(BlockBackend *blk, int argc, char **argv)
{
int64_t size;
--
2.29.2
- [PULL 02/30] block: bdrv_set_perm() drop redundant parameters., (continued)
- [PULL 02/30] block: bdrv_set_perm() drop redundant parameters., Max Reitz, 2020/12/18
- [PULL 04/30] block: drop tighten_restrictions, Max Reitz, 2020/12/18
- [PULL 06/30] block/io.c: drop assertion on double waiting for request serialisation, Max Reitz, 2020/12/18
- [PULL 07/30] block/io: split out bdrv_find_conflicting_request, Max Reitz, 2020/12/18
- [PULL 08/30] block/io: bdrv_wait_serialising_requests_locked: drop extra bs arg, Max Reitz, 2020/12/18
- [PULL 09/30] block: bdrv_mark_request_serialising: split non-waiting function, Max Reitz, 2020/12/18
- [PULL 11/30] block: bdrv_check_perm(): process children anyway, Max Reitz, 2020/12/18
- [PULL 05/30] block: simplify comment to BDRV_REQ_SERIALISING, Max Reitz, 2020/12/18
- [PULL 10/30] block: introduce BDRV_REQ_NO_WAIT flag, Max Reitz, 2020/12/18
- [PULL 14/30] iotests: qemu_io_silent: support --image-opts, Max Reitz, 2020/12/18
- [PULL 13/30] qemu-io: add preallocate mode parameter for truncate command,
Max Reitz <=
- [PULL 12/30] block: introduce preallocate filter, Max Reitz, 2020/12/18
- [PULL 15/30] iotests.py: execute_setup_common(): add required_fmts argument, Max Reitz, 2020/12/18
- [PULL 16/30] iotests: add 298 to test new preallocate filter driver, Max Reitz, 2020/12/18
- [PULL 19/30] scripts/simplebench: use standard deviation for +- error, Max Reitz, 2020/12/18
- [PULL 17/30] scripts/simplebench: fix grammar: s/successed/succeeded/, Max Reitz, 2020/12/18
- [PULL 18/30] scripts/simplebench: support iops, Max Reitz, 2020/12/18
- [PULL 20/30] simplebench: rename ascii() to results_to_text(), Max Reitz, 2020/12/18
- [PULL 23/30] simplebench/results_to_text: add difference line to the table, Max Reitz, 2020/12/18
- [PULL 22/30] simplebench/results_to_text: improve view of the table, Max Reitz, 2020/12/18
- [PULL 21/30] simplebench: move results_to_text() into separate file, Max Reitz, 2020/12/18