}
ufsvfsp = (struct ufsvfs *)vfsp->vfs_data;
-#if defined(AFS_SUN57_ENV)
+#ifdef HAVE_VFS_DQRWLOCK
rw_enter(&ufsvfsp->vfs_dqrwlock, RW_READER);
#endif
code = (*ufs_igetp)(vfsp, inode, &ip, credp);
-#if defined(AFS_SUN57_ENV)
+#ifdef HAVE_VFS_DQRWLOCK
rw_exit(&ufsvfsp->vfs_dqrwlock);
#endif
ufsvfsp = ip->i_ufsvfs;
rw_enter(&ip->i_rwlock, RW_WRITER);
-#if defined(AFS_SUN57_ENV)
+#ifdef HAVE_VFS_DQRWLOCK
rw_enter(&ufsvfsp->vfs_dqrwlock, RW_READER);
#endif
rw_enter(&ip->i_contents, RW_WRITER);
code = (*ufs_iallocp)(ip, near_inode, 0, &newip, credp);
AFS_ITIMES_NOLOCK(ip);
rw_exit(&ip->i_contents);
-#if defined(AFS_SUN57_ENV)
+#ifdef HAVE_VFS_DQRWLOCK
rw_exit(&ufsvfsp->vfs_dqrwlock);
#endif
rw_exit(&ip->i_rwlock);
--- /dev/null
+AC_DEFUN(SOLARIS_UFSVFS_HAS_DQRWLOCK, [
+AC_MSG_CHECKING(for vfs_dqrwlock in struct ufsvfs)
+AC_CACHE_VAL(ac_cv_solaris_ufsvfs_has_dqrwlock,
+[
+AC_TRY_COMPILE(
+[#define _KERNEL
+#include <sys/fs/ufs_inode.h>],
+[struct ufsvfs _ufsvfs;
+(void) _ufsvfs.vfs_dqrwlock;],
+ac_cv_solaris_ufsvfs_has_dqrwlock=yes,
+ac_cv_solaris_ufsvfs_has_dqrwlock=no)])
+AC_MSG_RESULT($ac_cv_solaris_ufsvfs_has_dqrwlock)
+if test "$ac_cv_solaris_ufsvfs_has_dqrwlock" = "yes"; then
+ AC_DEFINE(HAVE_VFS_DQRWLOCK, 1, [define if struct ufsvfs has vfs_dqrwlock])
+fi
+])
+