also use bufq_quiesce() when suspending, and bufq_restart() when resuming,
authorderaadt <deraadt@openbsd.org>
Tue, 20 Jul 2010 12:23:00 +0000 (12:23 +0000)
committerderaadt <deraadt@openbsd.org>
Tue, 20 Jul 2010 12:23:00 +0000 (12:23 +0000)
which will result in more stable filesystems during suspend
ok kettenis

sys/arch/i386/i386/apm.c
sys/arch/zaurus/dev/zaurus_apm.c

index 5203799..22243f7 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: apm.c,v 1.86 2010/06/26 23:24:43 guenther Exp $       */
+/*     $OpenBSD: apm.c,v 1.87 2010/07/20 12:23:00 deraadt Exp $        */
 
 /*-
  * Copyright (c) 1998-2001 Michael Shalayeff. All rights reserved.
@@ -48,6 +48,7 @@
 #include <sys/device.h>
 #include <sys/fcntl.h>
 #include <sys/ioctl.h>
+#include <sys/buf.h>
 #include <sys/event.h>
 #include <sys/mount.h> /* for vfs_syncwait() proto */
 
@@ -322,6 +323,8 @@ apm_suspend()
 #if NWSDISPLAY > 0
        wsdisplay_suspend();
 #endif /* NWSDISPLAY > 0 */
+       bufq_quiesce();
+
        dopowerhooks(PWR_SUSPEND);
 
        if (cold)
@@ -336,6 +339,8 @@ apm_standby()
 #if NWSDISPLAY > 0
        wsdisplay_suspend();
 #endif /* NWSDISPLAY > 0 */
+       bufq_quiesce();
+
        dopowerhooks(PWR_STANDBY);
 
        if (cold)
@@ -365,6 +370,7 @@ apm_resume(struct apm_softc *sc, struct apmregs *regs)
        /* restore hw.setperf */
        if (cpu_setperf != NULL)
                cpu_setperf(perflevel);
+       bufq_restart();
 #if NWSDISPLAY > 0
        wsdisplay_resume();
 #endif /* NWSDISPLAY > 0 */
index 87997e9..422c53a 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: zaurus_apm.c,v 1.15 2010/04/21 03:11:30 deraadt Exp $ */
+/*     $OpenBSD: zaurus_apm.c,v 1.16 2010/07/20 12:23:02 deraadt Exp $ */
 
 /*
  * Copyright (c) 2005 Uwe Stuehler <uwe@bsdx.de>
@@ -22,6 +22,7 @@
 #include <sys/timeout.h>
 #include <sys/conf.h>
 #include <sys/proc.h>
+#include <sys/buf.h>
 #include <sys/sysctl.h>
 
 #include <arm/xscale/pxa2x0reg.h>
@@ -567,6 +568,8 @@ zapm_suspend(struct pxa2x0_apm_softc *pxa_sc)
 {
        struct zapm_softc *sc = (struct zapm_softc *)pxa_sc;
 
+       bufq_quiesce();
+
        /* Poll in suspended mode and forget the discharge timeout. */
        sc->sc_suspended = 1;
        timeout_del(&sc->sc_poll);
@@ -631,6 +634,7 @@ zapm_resume(struct pxa2x0_apm_softc *pxa_sc)
 #endif
        }
 
+       bufq_restart();
        return (wakeup);
 }