summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorBrian Behlendorf <[email protected]>2021-09-14 09:17:54 -0700
committerTony Hutter <[email protected]>2021-11-02 09:50:30 -0700
commit143476ce8d3aa4595ce7040cb0aabd2fd0e13dc8 (patch)
tree90a138d1aa90344d341bcf94def34a0609662c93 /lib
parentd8a97a7be2ebd6eb305aba86ba7eec2ac0a4739b (diff)
Use fallthrough macro
As of the Linux 5.9 kernel a fallthrough macro has been added which should be used to anotate all intentional fallthrough paths. Once all of the kernel code paths have been updated to use fallthrough the -Wimplicit-fallthrough option will because the default. To avoid warnings in the OpenZFS code base when this happens apply the fallthrough macro. Additional reading: https://lwn.net/Articles/794944/ Reviewed-by: Tony Nguyen <[email protected]> Reviewed-by: George Melikov <[email protected]> Signed-off-by: Brian Behlendorf <[email protected]> Closes #12441
Diffstat (limited to 'lib')
-rw-r--r--lib/libspl/include/sys/feature_tests.h11
-rw-r--r--lib/libzfs/libzfs_dataset.c5
-rw-r--r--lib/libzfs/libzfs_pool.c4
-rw-r--r--lib/libzfs/libzfs_sendrecv.c2
-rw-r--r--lib/libzfs/libzfs_util.c2
-rw-r--r--lib/libzfsbootenv/lzbe_device.c2
-rw-r--r--lib/libzutil/zutil_import.c2
7 files changed, 19 insertions, 9 deletions
diff --git a/lib/libspl/include/sys/feature_tests.h b/lib/libspl/include/sys/feature_tests.h
index 1a68b75f0..a36fd7b8c 100644
--- a/lib/libspl/include/sys/feature_tests.h
+++ b/lib/libspl/include/sys/feature_tests.h
@@ -27,6 +27,15 @@
#ifndef _SYS_FEATURE_TESTS_H
#define _SYS_FEATURE_TESTS_H
-#define __NORETURN __attribute__((__noreturn__))
+#define ____cacheline_aligned
+#define __NORETURN __attribute__((__noreturn__))
+
+#if !defined(fallthrough)
+#if defined(HAVE_IMPLICIT_FALLTHROUGH)
+#define fallthrough __attribute__((__fallthrough__))
+#else
+#define fallthrough ((void)0)
+#endif
+#endif
#endif
diff --git a/lib/libzfs/libzfs_dataset.c b/lib/libzfs/libzfs_dataset.c
index 2accfff28..8251c434f 100644
--- a/lib/libzfs/libzfs_dataset.c
+++ b/lib/libzfs/libzfs_dataset.c
@@ -1363,10 +1363,9 @@ badlabel:
(void) zfs_error(hdl, EZFS_BADPROP, errbuf);
goto error;
}
+ fallthrough;
}
- /*FALLTHRU*/
-
case ZFS_PROP_SHARESMB:
case ZFS_PROP_SHARENFS:
/*
@@ -3765,8 +3764,8 @@ zfs_create(libzfs_handle_t *hdl, const char *path, zfs_type_t type,
if (type == ZFS_TYPE_VOLUME)
return (zfs_error(hdl, EZFS_VOLTOOBIG,
errbuf));
+ fallthrough;
#endif
- /* FALLTHROUGH */
default:
return (zfs_standard_error(hdl, errno, errbuf));
}
diff --git a/lib/libzfs/libzfs_pool.c b/lib/libzfs/libzfs_pool.c
index 58056ac70..c6884538d 100644
--- a/lib/libzfs/libzfs_pool.c
+++ b/lib/libzfs/libzfs_pool.c
@@ -314,7 +314,7 @@ zpool_get_prop(zpool_handle_t *zhp, zpool_prop_t prop, char *buf,
len);
break;
}
- /* FALLTHROUGH */
+ fallthrough;
default:
(void) strlcpy(buf, "-", len);
break;
@@ -405,7 +405,7 @@ zpool_get_prop(zpool_handle_t *zhp, zpool_prop_t prop, char *buf,
(void) snprintf(buf, len, "-");
break;
}
- /* FALLTHROUGH */
+ fallthrough;
default:
(void) snprintf(buf, len, "%llu", (u_longlong_t)intval);
}
diff --git a/lib/libzfs/libzfs_sendrecv.c b/lib/libzfs/libzfs_sendrecv.c
index 4340ff955..86ff8c91a 100644
--- a/lib/libzfs/libzfs_sendrecv.c
+++ b/lib/libzfs/libzfs_sendrecv.c
@@ -4878,7 +4878,7 @@ zfs_receive_one(libzfs_handle_t *hdl, int infd, const char *tosnap,
(void) zfs_error(hdl, EZFS_BUSY, errbuf);
break;
}
- /* fallthru */
+ fallthrough;
default:
(void) zfs_standard_error(hdl, ioctl_errno, errbuf);
}
diff --git a/lib/libzfs/libzfs_util.c b/lib/libzfs/libzfs_util.c
index 4170cf019..6e57d8e42 100644
--- a/lib/libzfs/libzfs_util.c
+++ b/lib/libzfs/libzfs_util.c
@@ -598,7 +598,7 @@ zfs_setprop_error(libzfs_handle_t *hdl, zfs_prop_t prop, int err,
break;
}
#endif
- /* FALLTHROUGH */
+ fallthrough;
default:
(void) zfs_standard_error(hdl, err, errbuf);
}
diff --git a/lib/libzfsbootenv/lzbe_device.c b/lib/libzfsbootenv/lzbe_device.c
index 2d8833b4f..2d9c7b749 100644
--- a/lib/libzfsbootenv/lzbe_device.c
+++ b/lib/libzfsbootenv/lzbe_device.c
@@ -63,7 +63,7 @@ lzbe_set_boot_device(const char *pool, lzbe_flags_t flag, const char *device)
/* Drop this nvlist */
fnvlist_free(nv);
}
- /* FALLTHROUGH */
+ fallthrough;
case lzbe_replace:
nv = fnvlist_alloc();
break;
diff --git a/lib/libzutil/zutil_import.c b/lib/libzutil/zutil_import.c
index 0e59ec8c8..9f24eb128 100644
--- a/lib/libzutil/zutil_import.c
+++ b/lib/libzutil/zutil_import.c
@@ -1023,9 +1023,11 @@ zpool_read_label(int fd, nvlist_t **config, int *num_labels)
// This shouldn't be possible to
// encounter, die if we do.
ASSERT(B_FALSE);
+ fallthrough;
case EOPNOTSUPP:
case ENOSYS:
do_slow = B_TRUE;
+ fallthrough;
case 0:
default:
(void) aio_return(&aiocbs[l]);