From 4a5d7f82679d848bcfb95d6c841f0418b24bfeab Mon Sep 17 00:00:00 2001 From: Matthew Ahrens Date: Wed, 8 Feb 2017 09:27:48 -0800 Subject: [PATCH] Allow c99 code to compile Add the appropriate compiler flags to accept c99 code. This will help to minimize differences with upstream, and aid porting changes. One change was necessary in zvol.c because the DEFINE_IDA() macro does not work with the new compiler flags. Reviewed-by: Brian Behlendorf Reviewed-by: Chunwei Chen Reviewed-by: George Melikov Signed-off-by: Matthew Ahrens Closes #5756 --- config/Rules.am | 1 + config/kernel.m4 | 1 + module/zfs/dsl_dataset.c | 3 +-- module/zfs/zvol.c | 4 +++- 4 files changed, 6 insertions(+), 3 deletions(-) diff --git a/config/Rules.am b/config/Rules.am index 20a21e972..1d39e7779 100644 --- a/config/Rules.am +++ b/config/Rules.am @@ -5,6 +5,7 @@ AM_CFLAGS = ${DEBUG_CFLAGS} -Wall -Wstrict-prototypes AM_CFLAGS += ${NO_UNUSED_BUT_SET_VARIABLE} AM_CFLAGS += ${NO_BOOL_COMPARE} AM_CFLAGS += -fno-strict-aliasing +AM_CFLAGS += -std=gnu99 AM_CPPFLAGS = -D_GNU_SOURCE -D__EXTENSIONS__ -D_REENTRANT AM_CPPFLAGS += -D_POSIX_PTHREAD_SEMANTICS -D_FILE_OFFSET_BITS=64 AM_CPPFLAGS += -D_LARGEFILE64_SOURCE -DHAVE_LARGE_STACKS=1 diff --git a/config/kernel.m4 b/config/kernel.m4 index a44132837..b8bd41e08 100644 --- a/config/kernel.m4 +++ b/config/kernel.m4 @@ -123,6 +123,7 @@ AC_DEFUN([ZFS_AC_CONFIG_KERNEL], [ dnl # -Wall -fno-strict-aliasing -Wstrict-prototypes and other dnl # compiler options are added by the kernel build system. + KERNELCPPFLAGS="$KERNELCPPFLAGS -std=gnu99" KERNELCPPFLAGS="$KERNELCPPFLAGS -Wno-declaration-after-statement" KERNELCPPFLAGS="$KERNELCPPFLAGS $NO_UNUSED_BUT_SET_VARIABLE" KERNELCPPFLAGS="$KERNELCPPFLAGS $NO_BOOL_COMPARE" diff --git a/module/zfs/dsl_dataset.c b/module/zfs/dsl_dataset.c index 0665c12fc..2ea64a2bb 100644 --- a/module/zfs/dsl_dataset.c +++ b/module/zfs/dsl_dataset.c @@ -2956,7 +2956,6 @@ void dsl_dataset_clone_swap_sync_impl(dsl_dataset_t *clone, dsl_dataset_t *origin_head, dmu_tx_t *tx) { - spa_feature_t f; dsl_pool_t *dp = dmu_tx_pool(tx); int64_t unused_refres_delta; blkptr_t tmp; @@ -2974,7 +2973,7 @@ dsl_dataset_clone_swap_sync_impl(dsl_dataset_t *clone, /* * Swap per-dataset feature flags. */ - for (f = 0; f < SPA_FEATURES; f++) { + for (spa_feature_t f = 0; f < SPA_FEATURES; f++) { boolean_t clone_inuse; boolean_t origin_head_inuse; diff --git a/module/zfs/zvol.c b/module/zfs/zvol.c index e5cd47afd..abe77ecd4 100644 --- a/module/zfs/zvol.c +++ b/module/zfs/zvol.c @@ -65,7 +65,8 @@ static list_t zvol_state_list; #define ZVOL_HT_SIZE 1024 static struct hlist_head *zvol_htable; #define ZVOL_HT_HEAD(hash) (&zvol_htable[(hash) & (ZVOL_HT_SIZE-1)]) -static DEFINE_IDA(zvol_ida); + +static struct ida zvol_ida; /* * The in-core state of each volume. @@ -2161,6 +2162,7 @@ zvol_init(void) list_create(&zvol_state_list, sizeof (zvol_state_t), offsetof(zvol_state_t, zv_next)); mutex_init(&zvol_state_lock, NULL, MUTEX_DEFAULT, NULL); + ida_init(&zvol_ida); zvol_htable = kmem_alloc(ZVOL_HT_SIZE * sizeof (struct hlist_head), KM_SLEEP);