Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/netbsd-9]: src Pull up following revision(s) (requested by riastradh in ...



details:   https://anonhg.NetBSD.org/src/rev/99bdd4388dc0
branches:  netbsd-9
changeset: 1001509:99bdd4388dc0
user:      martin <martin%NetBSD.org@localhost>
date:      Tue Feb 25 20:03:12 2020 +0000

description:
Pull up following revision(s) (requested by riastradh in ticket #725):

        etc/rc.d/mountall: revision 1.12
        external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vnops.c: revision 1.59
        external/cddl/osnet/sys/kern/misc.c: revision 1.8
        external/cddl/osnet/dist/uts/common/fs/zfs/spa_history.c: revision 1.5
        external/cddl/osnet/dist/uts/common/fs/zfs/spa_history.c: revision 1.6
        external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vnops.c: revision 1.60
        external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vnops.c: revision 1.61

Define VOP_STRATEGY on zfs device nodes too.
Fixes eternal hangs in attempts to do I/O on device nodes on zfs.
XXX pullup

Teach zfs spec nodes to VOP_BWRITE too.
Fixes hang on writing to, e.g., ffs mounted on a device node that
lives on zfs.
XXX pullup

Teach device nodes on zfs to handle fsync by calling spec_fsync too.
If zfs=YES, unconditioally do zfs mount/unmount -a.

If you set zfs=YES, presumably you positively want the automatic rc.d
actions, so if there's no /sbin/zfs or if zfs can't find pools with
/etc/zfs/zpool.cache, presumably you would like feedback about that
in rc.log.

Report the OS name and release appropriately for NetBSD.
We are not OpenSolaris or uts!

Mark previous #ifdef __NetBSD__, per request from hannken.

diffstat:

 etc/rc.d/mountall                                        |   6 ++--
 external/cddl/osnet/dist/uts/common/fs/zfs/spa_history.c |   8 +++++++
 external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vnops.c   |  17 +++++++++++++++-
 external/cddl/osnet/sys/kern/misc.c                      |   4 +-
 4 files changed, 29 insertions(+), 6 deletions(-)

diffs (109 lines):

diff -r 5a4d95450c69 -r 99bdd4388dc0 etc/rc.d/mountall
--- a/etc/rc.d/mountall Tue Feb 25 19:25:19 2020 +0000
+++ b/etc/rc.d/mountall Tue Feb 25 20:03:12 2020 +0000
@@ -1,6 +1,6 @@
 #!/bin/sh
 #
-# $NetBSD: mountall,v 1.10.4.1 2019/09/27 09:18:37 martin Exp $
+# $NetBSD: mountall,v 1.10.4.2 2020/02/25 20:03:12 martin Exp $
 #
 
 # REQUIRE: mountcritremote named ypbind
@@ -17,7 +17,7 @@
        echo 'Mounting all file systems...'
        # Mount file systems noted in fstab.
        mount -a
-       if checkyesno zfs && [ -x /sbin/zfs -a -f /etc/zfs/zpool.cache ]; then
+       if checkyesno zfs; then
                # Mount ZFS file systems.
                zfs mount -a
        fi
@@ -26,7 +26,7 @@
 mountall_stop()
 {
        echo 'Unmounting all file systems...'
-       if checkyesno zfs && [ -x /sbin/zfs -a -f /etc/zfs/zpool.cache ]; then
+       if checkyesno zfs; then
                # Unmount ZFS file systems.
                zfs unmount -a
        fi
diff -r 5a4d95450c69 -r 99bdd4388dc0 external/cddl/osnet/dist/uts/common/fs/zfs/spa_history.c
--- a/external/cddl/osnet/dist/uts/common/fs/zfs/spa_history.c  Tue Feb 25 19:25:19 2020 +0000
+++ b/external/cddl/osnet/dist/uts/common/fs/zfs/spa_history.c  Tue Feb 25 20:03:12 2020 +0000
@@ -540,9 +540,17 @@
 void
 spa_history_log_version(spa_t *spa, const char *operation)
 {
+#ifdef __NetBSD__
+       spa_history_log_internal(spa, operation, NULL,
+           "pool version %llu; software version %llu/%d; %s %s %s %s %s",
+           (u_longlong_t)spa_version(spa), SPA_VERSION, ZPL_VERSION,
+           utsname.sysname, utsname.nodename, utsname.release, utsname.version,
+           utsname.machine);
+#else
        spa_history_log_internal(spa, operation, NULL,
            "pool version %llu; software version %llu/%d; uts %s %s %s %s",
            (u_longlong_t)spa_version(spa), SPA_VERSION, ZPL_VERSION,
            utsname.nodename, utsname.release, utsname.version,
            utsname.machine);
+#endif
 }
diff -r 5a4d95450c69 -r 99bdd4388dc0 external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vnops.c
--- a/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vnops.c    Tue Feb 25 19:25:19 2020 +0000
+++ b/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vnops.c    Tue Feb 25 20:03:12 2020 +0000
@@ -5487,6 +5487,19 @@
 }
 
 static int
+zfs_spec_fsync(void *v)
+{
+       struct vop_fsync_args *ap = v;
+       int error;
+
+       error = spec_fsync(v);
+       if (error)
+               return error;
+
+       return (zfs_fsync(ap->a_vp, ap->a_flags, ap->a_cred, NULL));
+}
+
+static int
 zfs_netbsd_getattr(void *v)
 {
        struct vop_getattr_args *ap = v;
@@ -6332,7 +6345,7 @@
        { &vop_poll_desc,               spec_poll },
        { &vop_kqfilter_desc,           spec_kqfilter },
        { &vop_revoke_desc,             spec_revoke },
-       { &vop_fsync_desc,              zfs_netbsd_fsync },
+       { &vop_fsync_desc,              zfs_spec_fsync },
        { &vop_remove_desc,             spec_remove },
        { &vop_link_desc,               spec_link },
        { &vop_lock_desc,               zfs_netbsd_lock },
@@ -6352,6 +6365,8 @@
        { &vop_mmap_desc,               spec_mmap },
        { &vop_islocked_desc,           zfs_netbsd_islocked },
        { &vop_advlock_desc,            spec_advlock },
+       { &vop_strategy_desc,           spec_strategy },
+       { &vop_bwrite_desc,             spec_bwrite },
        { &vop_print_desc,              zfs_netbsd_print },
        { &vop_fcntl_desc,              zfs_netbsd_fcntl },
        { NULL, NULL }
diff -r 5a4d95450c69 -r 99bdd4388dc0 external/cddl/osnet/sys/kern/misc.c
--- a/external/cddl/osnet/sys/kern/misc.c       Tue Feb 25 19:25:19 2020 +0000
+++ b/external/cddl/osnet/sys/kern/misc.c       Tue Feb 25 20:03:12 2020 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: misc.c,v 1.5 2018/05/28 21:05:09 chs Exp $     */
+/*     $NetBSD: misc.c,v 1.5.4.1 2020/02/25 20:03:12 martin Exp $      */
 
 /*-
  * Copyright (c) 2009 The NetBSD Foundation, Inc.
@@ -82,7 +82,7 @@
        strlcpy(utsname.sysname, ostype, sizeof(utsname.sysname));
        strlcpy(utsname.nodename, hostname, sizeof(utsname.nodename));
        strlcpy(utsname.release, osrelease, sizeof(utsname.release));
-       strlcpy(utsname.version, "OpenSolaris", sizeof(utsname.version));
+       strlcpy(utsname.version, version, sizeof(utsname.version));
        strlcpy(utsname.machine, machine, sizeof(utsname.machine));
 }
 



Home | Main Index | Thread Index | Old Index