projects
/
fio.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
zbd: Fix error message
[fio.git]
/
zbd.c
diff --git
a/zbd.c
b/zbd.c
index 1c46b45298db18fcf2d8e36971ec1b85e790926a..876246ed9f5d639123012de683e423e251e4cc85 100644
(file)
--- a/
zbd.c
+++ b/
zbd.c
@@
-312,13
+312,23
@@
static int init_zone_info(struct thread_data *td, struct fio_file *f)
{
uint32_t nr_zones;
struct fio_zone_info *p;
{
uint32_t nr_zones;
struct fio_zone_info *p;
- uint64_t zone_size;
+ uint64_t zone_size
= td->o.zone_size
;
struct zoned_block_device_info *zbd_info = NULL;
pthread_mutexattr_t attr;
int i;
struct zoned_block_device_info *zbd_info = NULL;
pthread_mutexattr_t attr;
int i;
- zone_size = td->o.zone_size;
- assert(zone_size);
+ if (zone_size == 0) {
+ log_err("%s: Specifying the zone size is mandatory for regular block devices with --zonemode=zbd\n\n",
+ f->file_name);
+ return 1;
+ }
+
+ if (zone_size < 512) {
+ log_err("%s: zone size must be at least 512 bytes for --zonemode=zbd\n\n",
+ f->file_name);
+ return 1;
+ }
+
nr_zones = (f->real_file_size + zone_size - 1) / zone_size;
zbd_info = scalloc(1, sizeof(*zbd_info) +
(nr_zones + 1) * sizeof(zbd_info->zone_info[0]));
nr_zones = (f->real_file_size + zone_size - 1) / zone_size;
zbd_info = scalloc(1, sizeof(*zbd_info) +
(nr_zones + 1) * sizeof(zbd_info->zone_info[0]));
@@
-401,8
+411,8
@@
static int parse_zone_info(struct thread_data *td, struct fio_file *f)
if (td->o.zone_size == 0) {
td->o.zone_size = zone_size;
} else if (td->o.zone_size != zone_size) {
if (td->o.zone_size == 0) {
td->o.zone_size = zone_size;
} else if (td->o.zone_size != zone_size) {
- log_
info
("fio: %s job parameter zonesize %llu does not match disk zone size %llu.\n",
-
f->file_name, (unsigned long long) td->o.zone_size,
+ log_
err
("fio: %s job parameter zonesize %llu does not match disk zone size %llu.\n",
+ f->file_name, (unsigned long long) td->o.zone_size,
(unsigned long long) zone_size);
ret = -EINVAL;
goto close;
(unsigned long long) zone_size);
ret = -EINVAL;
goto close;
@@
-426,8
+436,6
@@
static int parse_zone_info(struct thread_data *td, struct fio_file *f)
p->start = z->start << 9;
switch (z->cond) {
case BLK_ZONE_COND_NOT_WP:
p->start = z->start << 9;
switch (z->cond) {
case BLK_ZONE_COND_NOT_WP:
- p->wp = p->start;
- break;
case BLK_ZONE_COND_FULL:
p->wp = p->start + zone_size;
break;
case BLK_ZONE_COND_FULL:
p->wp = p->start + zone_size;
break;
@@
-483,7
+491,7
@@
out:
*
* Returns 0 upon success and a negative error code upon failure.
*/
*
* Returns 0 upon success and a negative error code upon failure.
*/
-int zbd_create_zone_info(struct thread_data *td, struct fio_file *f)
+
static
int zbd_create_zone_info(struct thread_data *td, struct fio_file *f)
{
enum blk_zoned_model zbd_model;
int ret = 0;
{
enum blk_zoned_model zbd_model;
int ret = 0;
@@
-551,7
+559,7
@@
static int zbd_init_zone_info(struct thread_data *td, struct fio_file *file)
ret = zbd_create_zone_info(td, file);
if (ret < 0)
ret = zbd_create_zone_info(td, file);
if (ret < 0)
- td_verror(td, -ret, "
BLKREPORTZONE
failed");
+ td_verror(td, -ret, "
zbd_create_zone_info()
failed");
return ret;
}
return ret;
}
@@
-563,18
+571,8
@@
int zbd_init(struct thread_data *td)
for_each_file(td, f, i) {
if (f->filetype != FIO_TYPE_BLOCK)
continue;
for_each_file(td, f, i) {
if (f->filetype != FIO_TYPE_BLOCK)
continue;
- if (td->o.zone_size && td->o.zone_size < 512) {
- log_err("%s: zone size must be at least 512 bytes for --zonemode=zbd\n\n",
- f->file_name);
+ if (zbd_init_zone_info(td, f))
return 1;
return 1;
- }
- if (td->o.zone_size == 0 &&
- get_zbd_model(f->file_name) == ZBD_DM_NONE) {
- log_err("%s: Specifying the zone size is mandatory for regular block devices with --zonemode=zbd\n\n",
- f->file_name);
- return 1;
- }
- zbd_init_zone_info(td, f);
}
if (!zbd_using_direct_io()) {
}
if (!zbd_using_direct_io()) {
@@
-935,8
+933,8
@@
static void zbd_close_zone(struct thread_data *td, const struct fio_file *f,
* a multiple of the fio block size. The caller must neither hold z->mutex
* nor f->zbd_info->mutex. Returns with z->mutex held upon success.
*/
* a multiple of the fio block size. The caller must neither hold z->mutex
* nor f->zbd_info->mutex. Returns with z->mutex held upon success.
*/
-struct fio_zone_info *zbd_convert_to_open_zone(struct thread_data *td,
- struct io_u *io_u)
+st
atic st
ruct fio_zone_info *zbd_convert_to_open_zone(struct thread_data *td,
+
struct io_u *io_u)
{
const uint32_t min_bs = td->o.min_bs[io_u->ddir];
const struct fio_file *f = io_u->file;
{
const uint32_t min_bs = td->o.min_bs[io_u->ddir];
const struct fio_file *f = io_u->file;