From: Josef 'Jeff' Sipek Date: Tue, 21 Jul 2020 17:13:20 +0000 (-0400) Subject: lib-fs: randomfail - Use container_of() instead of casts X-Git-Tag: 2.3.13~428 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=4f1409f68e95b59dc0049c91fa4dbf72d6008b68;p=thirdparty%2Fdovecot%2Fcore.git lib-fs: randomfail - Use container_of() instead of casts Being more explicit not only makes the code more explict, it makes it safer. --- diff --git a/src/lib-fs/fs-randomfail.c b/src/lib-fs/fs-randomfail.c index b43af32ec4..594ce56359 100644 --- a/src/lib-fs/fs-randomfail.c +++ b/src/lib-fs/fs-randomfail.c @@ -38,6 +38,10 @@ struct randomfail_fs_iter { unsigned int fail_pos; }; +#define RANDOMFAIL_FS(ptr) container_of((ptr), struct randomfail_fs, fs) +#define RANDOMFAIL_FILE(ptr) container_of((ptr), struct randomfail_fs_file, file) +#define RANDOMFAIL_ITER(ptr) container_of((ptr), struct randomfail_fs_iter, iter) + static struct fs *fs_randomfail_alloc(void) { struct randomfail_fs *fs; @@ -161,7 +165,7 @@ static int fs_randomfail_init(struct fs *_fs, const char *args, const struct fs_settings *set, const char **error_r) { - struct randomfail_fs *fs = (struct randomfail_fs *)_fs; + struct randomfail_fs *fs = RANDOMFAIL_FS(_fs); const char *p, *parent_name, *parent_args, *error; p = strchr(args, ':'); @@ -196,7 +200,7 @@ fs_randomfail_init(struct fs *_fs, const char *args, static void fs_randomfail_free(struct fs *_fs) { - struct randomfail_fs *fs = (struct randomfail_fs *)_fs; + struct randomfail_fs *fs = RANDOMFAIL_FS(_fs); fs_deinit(&_fs->parent); i_free(fs); @@ -217,7 +221,7 @@ static void fs_randomfail_file_init(struct fs_file *_file, const char *path, enum fs_open_mode mode, enum fs_open_flags flags) { - struct randomfail_fs_file *file = (struct randomfail_fs_file *)_file; + struct randomfail_fs_file *file = RANDOMFAIL_FILE(_file); file->file.path = i_strdup(path); file->file.parent = fs_file_init_parent(_file, path, mode | flags); @@ -225,7 +229,7 @@ fs_randomfail_file_init(struct fs_file *_file, const char *path, static void fs_randomfail_file_deinit(struct fs_file *_file) { - struct randomfail_fs_file *file = (struct randomfail_fs_file *)_file; + struct randomfail_fs_file *file = RANDOMFAIL_FILE(_file); fs_file_free(_file); i_free(file->file.path); @@ -235,7 +239,7 @@ static void fs_randomfail_file_deinit(struct fs_file *_file) static bool fs_random_fail(struct fs *_fs, struct event *event, int divider, enum fs_op op) { - struct randomfail_fs *fs = (struct randomfail_fs *)_fs; + struct randomfail_fs *fs = RANDOMFAIL_FS(_fs); if (fs->op_probability[op] == 0) return FALSE; @@ -273,7 +277,7 @@ static bool fs_random_fail_range(struct fs *_fs, struct event *event, enum fs_op op, uoff_t *offset_r) { - struct randomfail_fs *fs = (struct randomfail_fs *)_fs; + struct randomfail_fs *fs = RANDOMFAIL_FS(_fs); if (!fs_random_fail(_fs, event, 1, op)) return FALSE; @@ -286,7 +290,7 @@ fs_randomfail_get_metadata(struct fs_file *_file, enum fs_get_metadata_flags flags, const ARRAY_TYPE(fs_metadata) **metadata_r) { - struct randomfail_fs_file *file = (struct randomfail_fs_file *)_file; + struct randomfail_fs_file *file = RANDOMFAIL_FILE(_file); int ret; if (fs_file_random_fail_begin(file, FS_OP_METADATA)) @@ -304,7 +308,7 @@ static bool fs_randomfail_prefetch(struct fs_file *_file, uoff_t length) static ssize_t fs_randomfail_read(struct fs_file *_file, void *buf, size_t size) { - struct randomfail_fs_file *file = (struct randomfail_fs_file *)_file; + struct randomfail_fs_file *file = RANDOMFAIL_FILE(_file); int ret; if (fs_file_random_fail_begin(file, FS_OP_READ)) @@ -331,7 +335,7 @@ fs_randomfail_read_stream(struct fs_file *_file, size_t max_buffer_size) static int fs_randomfail_write(struct fs_file *_file, const void *data, size_t size) { - struct randomfail_fs_file *file = (struct randomfail_fs_file *)_file; + struct randomfail_fs_file *file = RANDOMFAIL_FILE(_file); int ret; if (fs_file_random_fail_begin(file, FS_OP_WRITE)) @@ -342,7 +346,7 @@ static int fs_randomfail_write(struct fs_file *_file, const void *data, size_t s static void fs_randomfail_write_stream(struct fs_file *_file) { - struct randomfail_fs_file *file = (struct randomfail_fs_file *)_file; + struct randomfail_fs_file *file = RANDOMFAIL_FILE(_file); uoff_t offset; i_assert(_file->output == NULL); @@ -358,7 +362,7 @@ static void fs_randomfail_write_stream(struct fs_file *_file) static int fs_randomfail_write_stream_finish(struct fs_file *_file, bool success) { - struct randomfail_fs_file *file = (struct randomfail_fs_file *)_file; + struct randomfail_fs_file *file = RANDOMFAIL_FILE(_file); if (_file->output != NULL) { if (_file->output == file->super_output) @@ -392,7 +396,7 @@ static void fs_randomfail_unlock(struct fs_lock *_lock ATTR_UNUSED) static int fs_randomfail_exists(struct fs_file *_file) { - struct randomfail_fs_file *file = (struct randomfail_fs_file *)_file; + struct randomfail_fs_file *file = RANDOMFAIL_FILE(_file); int ret; if (fs_file_random_fail_begin(file, FS_OP_EXISTS)) @@ -403,7 +407,7 @@ static int fs_randomfail_exists(struct fs_file *_file) static int fs_randomfail_stat(struct fs_file *_file, struct stat *st_r) { - struct randomfail_fs_file *file = (struct randomfail_fs_file *)_file; + struct randomfail_fs_file *file = RANDOMFAIL_FILE(_file); int ret; if (fs_file_random_fail_begin(file, FS_OP_STAT)) @@ -414,7 +418,7 @@ static int fs_randomfail_stat(struct fs_file *_file, struct stat *st_r) static int fs_randomfail_get_nlinks(struct fs_file *_file, nlink_t *nlinks_r) { - struct randomfail_fs_file *file = (struct randomfail_fs_file *)_file; + struct randomfail_fs_file *file = RANDOMFAIL_FILE(_file); int ret; if (fs_file_random_fail_begin(file, FS_OP_STAT)) @@ -425,7 +429,7 @@ static int fs_randomfail_get_nlinks(struct fs_file *_file, nlink_t *nlinks_r) static int fs_randomfail_copy(struct fs_file *_src, struct fs_file *_dest) { - struct randomfail_fs_file *dest = (struct randomfail_fs_file *)_dest; + struct randomfail_fs_file *dest = RANDOMFAIL_FILE(_dest); int ret; if (fs_file_random_fail_begin(dest, FS_OP_COPY)) @@ -440,7 +444,7 @@ static int fs_randomfail_copy(struct fs_file *_src, struct fs_file *_dest) static int fs_randomfail_rename(struct fs_file *_src, struct fs_file *_dest) { - struct randomfail_fs_file *dest = (struct randomfail_fs_file *)_dest; + struct randomfail_fs_file *dest = RANDOMFAIL_FILE(_dest); int ret; if (fs_file_random_fail_begin(dest, FS_OP_RENAME)) @@ -451,7 +455,7 @@ static int fs_randomfail_rename(struct fs_file *_src, struct fs_file *_dest) static int fs_randomfail_delete(struct fs_file *_file) { - struct randomfail_fs_file *file = (struct randomfail_fs_file *)_file; + struct randomfail_fs_file *file = RANDOMFAIL_FILE(_file); int ret; if (fs_file_random_fail_begin(file, FS_OP_DELETE)) @@ -470,7 +474,7 @@ static void fs_randomfail_iter_init(struct fs_iter *_iter, const char *path, enum fs_iter_flags flags) { - struct randomfail_fs_iter *iter = (struct randomfail_fs_iter *)_iter; + struct randomfail_fs_iter *iter = RANDOMFAIL_ITER(_iter); uoff_t pos; iter->super = fs_iter_init_parent(_iter, path, flags); @@ -480,7 +484,7 @@ fs_randomfail_iter_init(struct fs_iter *_iter, const char *path, static const char *fs_randomfail_iter_next(struct fs_iter *_iter) { - struct randomfail_fs_iter *iter = (struct randomfail_fs_iter *)_iter; + struct randomfail_fs_iter *iter = RANDOMFAIL_ITER(_iter); const char *fname; if (iter->fail_pos > 0) { @@ -499,7 +503,7 @@ static const char *fs_randomfail_iter_next(struct fs_iter *_iter) static int fs_randomfail_iter_deinit(struct fs_iter *_iter) { - struct randomfail_fs_iter *iter = (struct randomfail_fs_iter *)_iter; + struct randomfail_fs_iter *iter = RANDOMFAIL_ITER(_iter); const char *error; int ret;