svn commit: r367343 - in head/sys/contrib/openzfs/include/os: freebsd/zfs/sys linux/zfs/sys

Mateusz Guzik mjg at FreeBSD.org
Wed Nov 4 21:18:52 UTC 2020


Author: mjg
Date: Wed Nov  4 21:18:51 2020
New Revision: 367343
URL: https://svnweb.freebsd.org/changeset/base/367343

Log:
  zfs: add branch prediction to ZFS_ENTER and ZFS_VERIFY_ZP macros
  
  They are expected to fail only in corner cases.

Modified:
  head/sys/contrib/openzfs/include/os/freebsd/zfs/sys/zfs_znode_impl.h
  head/sys/contrib/openzfs/include/os/linux/zfs/sys/zfs_znode_impl.h

Modified: head/sys/contrib/openzfs/include/os/freebsd/zfs/sys/zfs_znode_impl.h
==============================================================================
--- head/sys/contrib/openzfs/include/os/freebsd/zfs/sys/zfs_znode_impl.h	Wed Nov  4 21:18:27 2020	(r367342)
+++ head/sys/contrib/openzfs/include/os/freebsd/zfs/sys/zfs_znode_impl.h	Wed Nov  4 21:18:51 2020	(r367343)
@@ -119,7 +119,7 @@ extern minor_t zfsdev_minor_alloc(void);
 #define	ZFS_ENTER(zfsvfs) \
 	{ \
 		rrm_enter_read(&(zfsvfs)->z_teardown_lock, FTAG); \
-		if ((zfsvfs)->z_unmounted) { \
+		if (__predict_false((zfsvfs)->z_unmounted)) { \
 			ZFS_EXIT(zfsvfs); \
 			return (EIO); \
 		} \
@@ -130,7 +130,7 @@ extern minor_t zfsdev_minor_alloc(void);
 
 /* Verifies the znode is valid */
 #define	ZFS_VERIFY_ZP(zp) \
-	if ((zp)->z_sa_hdl == NULL) { \
+	if (__predict_false((zp)->z_sa_hdl == NULL)) { \
 		ZFS_EXIT((zp)->z_zfsvfs); \
 		return (EIO); \
 	} \

Modified: head/sys/contrib/openzfs/include/os/linux/zfs/sys/zfs_znode_impl.h
==============================================================================
--- head/sys/contrib/openzfs/include/os/linux/zfs/sys/zfs_znode_impl.h	Wed Nov  4 21:18:27 2020	(r367342)
+++ head/sys/contrib/openzfs/include/os/linux/zfs/sys/zfs_znode_impl.h	Wed Nov  4 21:18:51 2020	(r367343)
@@ -76,7 +76,7 @@ extern "C" {
 #define	ZFS_ENTER_ERROR(zfsvfs, error)				\
 do {								\
 	rrm_enter_read(&(zfsvfs)->z_teardown_lock, FTAG);	\
-	if ((zfsvfs)->z_unmounted) {				\
+	if (unlikely((zfsvfs)->z_unmounted)) {			\
 		ZFS_EXIT(zfsvfs);				\
 		return (error);					\
 	}							\
@@ -95,7 +95,7 @@ do {								\
 /* Verifies the znode is valid. */
 #define	ZFS_VERIFY_ZP_ERROR(zp, error)				\
 do {								\
-	if ((zp)->z_sa_hdl == NULL) {				\
+	if (unlikely((zp)->z_sa_hdl == NULL)) {			\
 		ZFS_EXIT(ZTOZSB(zp));				\
 		return (error);					\
 	}							\


More information about the svn-src-all mailing list