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);                                 \
        }                                                       \
_______________________________________________
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to