From bbf125500724befb010fee2f8f658f32512d8585 Mon Sep 17 00:00:00 2001 From: Thomas Schoebel-Theuer Date: Tue, 18 Oct 2022 18:48:42 +0200 Subject: [PATCH] aio: v3 obey CONFIG_MARS_CANNOT_USE_AIO_ANYMORE --- kernel/mars.h | 9 +++++++-- kernel/mars_aio.c | 17 ++++++++++++++++- kernel/mars_aio.h | 3 +++ kernel/sy_old/mars_proc.c | 4 ++++ 4 files changed, 30 insertions(+), 3 deletions(-) diff --git a/kernel/mars.h b/kernel/mars.h index aa4c878d..0ea2fbca 100644 --- a/kernel/mars.h +++ b/kernel/mars.h @@ -473,6 +473,10 @@ extern const struct generic_brick_type *_qio_brick_type; extern const struct generic_brick_type *_aio_brick_type; extern const struct generic_brick_type *_sio_brick_type; +#if defined(CONFIG_MARS_CANNOT_USE_AIO_ANYMORE) /* starting with kernel v5.10 */ +#define ENABLE_MARS_QIO +#else /* !defined(CONFIG_MARS_CANNOT_USE_AIO_ANYMORE) */ +/* QIO may only work for kernels 5.1 <= $to_check <= 5.9 but Frankensteins are unknown */ #if defined(IOCB_NOWAIT) && \ /* see dde0c2e79848298cc25621ad080d47f94dbd7cce */ \ defined(IOCB_DSYNC) && \ @@ -481,15 +485,16 @@ extern const struct generic_brick_type *_sio_brick_type; !defined(CONFIG_MARS_PREFER_SIO) && \ 1 #define ENABLE_MARS_QIO -#else +#else /* check whether AIO can be used in addition at kernels < v5.10 */ #if !defined(CONFIG_MARS_PREFER_SIO) && \ (defined(MARS_HAS_PREPATCH) || \ defined(MARS_HAS_PREPATCH_V2) || \ defined(MARS_HAS_PREPATCH_V3a) || \ - 1) + 0) /* When there is no prepatch, AIO cannot work anymore */ #define ENABLE_MARS_AIO #endif #endif +#endif /* !CONFIG_MARS_CANNOT_USE_AIO_ANYMORE */ #if defined(ENABLE_MARS_QIO) # define any_io_brick_type qio_brick_type diff --git a/kernel/mars_aio.c b/kernel/mars_aio.c index f551ee3b..aafac7ad 100644 --- a/kernel/mars_aio.c +++ b/kernel/mars_aio.c @@ -23,13 +23,14 @@ /* HISTORIC - please avoid this ASAP */ +#include +#if !defined(CONFIG_MARS_CANNOT_USE_AIO_ANYMORE) //#define BRICK_DEBUGGING #define MARS_DEBUGGING //#define IO_DEBUGGING #include -#include #include #include #include @@ -1438,3 +1439,17 @@ void exit_mars_aio(void) MARS_DBG("exit_aio()\n"); aio_unregister_brick_type(); } + +#else /* !CONFIG_MARS_CANNOT_USE_AIO_ANYMORE */ + +int __init init_mars_aio(void) +{ + /* empty */ + return 0; +} + +void exit_mars_aio(void) +{ +} + +#endif /* !CONFIG_MARS_CANNOT_USE_AIO_ANYMORE */ diff --git a/kernel/mars_aio.h b/kernel/mars_aio.h index 32a2bfea..8723c797 100644 --- a/kernel/mars_aio.h +++ b/kernel/mars_aio.h @@ -25,6 +25,8 @@ */ #ifndef MARS_AIO_H #define MARS_AIO_H +#include +#if !defined(CONFIG_MARS_CANNOT_USE_AIO_ANYMORE) #include #include @@ -124,4 +126,5 @@ struct aio_output { MARS_TYPES(aio); +#endif /* !CONFIG_MARS_CANNOT_USE_AIO_ANYMORE */ #endif diff --git a/kernel/sy_old/mars_proc.c b/kernel/sy_old/mars_proc.c index 057b1420..3b034606 100644 --- a/kernel/sy_old/mars_proc.c +++ b/kernel/sy_old/mars_proc.c @@ -533,10 +533,12 @@ struct ctl_table io_tuning_table[] = { THRESHOLD_ENTRIES(&bio_submit_threshold, "bio_submit"), THRESHOLD_ENTRIES(&bio_io_threshold[0], "bio_io_r"), THRESHOLD_ENTRIES(&bio_io_threshold[1], "bio_io_w"), +#if !defined(CONFIG_MARS_CANNOT_USE_AIO_ANYMORE) THRESHOLD_ENTRIES(&aio_submit_threshold, "aio_submit"), THRESHOLD_ENTRIES(&aio_io_threshold[0], "aio_io_r"), THRESHOLD_ENTRIES(&aio_io_threshold[1], "aio_io_w"), THRESHOLD_ENTRIES(&aio_sync_threshold, "aio_sync"), +#endif /* !CONFIG_MARS_CANNOT_USE_AIO_ANYMORE */ INT_ENTRY("if_nr_requests", if_nr_requests, 0600), #if defined(MARS_HAS_BIO_IO_ACCT) || defined(MARS_HAS_GENERIC_BLK_ACCOUNTING) INT_ENTRY("if_io_acct", mars_io_acct, 0600), @@ -620,7 +622,9 @@ struct ctl_table mars_table[] = { INT_ENTRY("show_statistics_server", server_show_statist, 0600), INT_ENTRY("show_connections", global_show_connections, 0600), #endif +#if !defined(CONFIG_MARS_CANNOT_USE_AIO_ANYMORE) INT_ENTRY("aio_sync_mode", aio_sync_mode, 0600), +#endif /* !CONFIG_MARS_CANNOT_USE_AIO_ANYMORE */ #ifdef CONFIG_MARS_DEBUG INT_ENTRY("debug_crash_mode", mars_crash_mode, 0600), INT_ENTRY("debug_hang_mode", mars_hang_mode, 0600),