Source-Changes-HG archive

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

[src/trunk]: src/sys implement bdev_size(9) wrapper around d_psize() routine, ...



details:   https://anonhg.NetBSD.org/src/rev/d76b606ffd7c
branches:  trunk
changeset: 771991:d76b606ffd7c
user:      mrg <mrg%NetBSD.org@localhost>
date:      Mon Dec 12 19:03:07 2011 +0000

description:
implement bdev_size(9) wrapper around d_psize() routine, so we can take
the device lock in relevant places.  avoid doing so while actually dumping.

tested i386 crash dumps still work, and that all touched files compile.

fixes PR#45705.

diffstat:

 sys/arch/alpha/alpha/machdep.c             |  16 ++++------------
 sys/arch/amd64/amd64/machdep.c             |  16 ++++------------
 sys/arch/amiga/amiga/machdep.c             |  13 ++++++-------
 sys/arch/arm/arm32/stubs.c                 |  14 ++++----------
 sys/arch/atari/atari/machdep.c             |  14 ++++----------
 sys/arch/cesfic/cesfic/machdep.c           |  14 +++-----------
 sys/arch/hp300/hp300/machdep.c             |  14 +++-----------
 sys/arch/hp700/hp700/autoconf.c            |  14 +++-----------
 sys/arch/hp700/hp700/machdep.c             |   6 +++---
 sys/arch/i386/i386/dumpsys.c               |  16 ++++------------
 sys/arch/luna68k/luna68k/machdep.c         |  14 +++-----------
 sys/arch/mac68k/mac68k/machdep.c           |  14 +++-----------
 sys/arch/mips/mips/mips_machdep.c          |  16 ++++------------
 sys/arch/mvme68k/mvme68k/machdep.c         |  16 ++++------------
 sys/arch/news68k/news68k/machdep.c         |  14 +++-----------
 sys/arch/next68k/next68k/machdep.c         |  14 +++-----------
 sys/arch/powerpc/powerpc/powerpc_machdep.c |  14 +++-----------
 sys/arch/sparc/sparc/machdep.c             |  13 ++++---------
 sys/arch/sparc64/sparc64/machdep.c         |  14 ++++----------
 sys/arch/sun2/sun2/machdep.c               |  18 ++++--------------
 sys/arch/sun3/sun3/machdep.c               |  18 ++++--------------
 sys/arch/sun3/sun3x/machdep.c              |  18 ++++--------------
 sys/arch/vax/vax/machdep.c                 |  15 +++++----------
 sys/arch/x68k/x68k/machdep.c               |  14 +++-----------
 sys/kern/subr_devsw.c                      |  27 +++++++++++++++++++++++++--
 sys/sys/conf.h                             |   3 ++-
 sys/uvm/uvm_swap.c                         |   9 +++------
 27 files changed, 119 insertions(+), 269 deletions(-)

diffs (truncated from 1167 to 300 lines):

diff -r 72da54636aba -r d76b606ffd7c sys/arch/alpha/alpha/machdep.c
--- a/sys/arch/alpha/alpha/machdep.c    Mon Dec 12 18:59:06 2011 +0000
+++ b/sys/arch/alpha/alpha/machdep.c    Mon Dec 12 19:03:07 2011 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: machdep.c,v 1.335 2011/06/12 03:35:37 rmind Exp $ */
+/* $NetBSD: machdep.c,v 1.336 2011/12/12 19:03:07 mrg Exp $ */
 
 /*-
  * Copyright (c) 1998, 1999, 2000 The NetBSD Foundation, Inc.
@@ -68,7 +68,7 @@
 
 #include <sys/cdefs.h>                 /* RCS ID & Copyright macro defns */
 
-__KERNEL_RCSID(0, "$NetBSD: machdep.c,v 1.335 2011/06/12 03:35:37 rmind Exp $");
+__KERNEL_RCSID(0, "$NetBSD: machdep.c,v 1.336 2011/12/12 19:03:07 mrg Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -1165,19 +1165,11 @@
 void
 cpu_dumpconf(void)
 {
-       const struct bdevsw *bdev;
        int nblks, dumpblks;    /* size of dump area */
 
        if (dumpdev == NODEV)
                goto bad;
-       bdev = bdevsw_lookup(dumpdev);
-       if (bdev == NULL) {
-               dumpdev = NODEV;
-               goto bad;
-       }
-       if (bdev->d_psize == NULL)
-               goto bad;
-       nblks = (*bdev->d_psize)(dumpdev);
+       nblks = bdev_size(dumpdev);
        if (nblks <= ctod(1))
                goto bad;
 
@@ -1241,7 +1233,7 @@
        printf("\ndumping to dev %u,%u offset %ld\n",
            major(dumpdev), minor(dumpdev), dumplo);
 
-       psize = (*bdev->d_psize)(dumpdev);
+       psize = bdev_size(dumpdev);
        printf("dump ");
        if (psize == -1) {
                printf("area unavailable\n");
diff -r 72da54636aba -r d76b606ffd7c sys/arch/amd64/amd64/machdep.c
--- a/sys/arch/amd64/amd64/machdep.c    Mon Dec 12 18:59:06 2011 +0000
+++ b/sys/arch/amd64/amd64/machdep.c    Mon Dec 12 19:03:07 2011 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: machdep.c,v 1.172 2011/12/04 16:24:13 chs Exp $        */
+/*     $NetBSD: machdep.c,v 1.173 2011/12/12 19:03:08 mrg Exp $        */
 
 /*-
  * Copyright (c) 1996, 1997, 1998, 2000, 2006, 2007, 2008, 2011
@@ -111,7 +111,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: machdep.c,v 1.172 2011/12/04 16:24:13 chs Exp $");
+__KERNEL_RCSID(0, "$NetBSD: machdep.c,v 1.173 2011/12/12 19:03:08 mrg Exp $");
 
 /* #define XENDEBUG_LOW  */
 
@@ -1226,7 +1226,7 @@
            (unsigned long long)major(dumpdev),
            (unsigned long long)minor(dumpdev), dumplo);
 
-       psize = (*bdev->d_psize)(dumpdev);
+       psize = bdev_size(dumpdev);
        printf("dump ");
        if (psize == -1) {
                printf("area unavailable\n");
@@ -1323,19 +1323,11 @@
 void
 cpu_dumpconf(void)
 {
-       const struct bdevsw *bdev;
        int nblks, dumpblks;    /* size of dump area */
 
        if (dumpdev == NODEV)
                goto bad;
-       bdev = bdevsw_lookup(dumpdev);
-       if (bdev == NULL) {
-               dumpdev = NODEV;
-               goto bad;
-       }
-       if (bdev->d_psize == NULL)
-               goto bad;
-       nblks = (*bdev->d_psize)(dumpdev);
+       nblks = bdev_size(dumpdev);
        if (nblks <= ctod(1))
                goto bad;
 
diff -r 72da54636aba -r d76b606ffd7c sys/arch/amiga/amiga/machdep.c
--- a/sys/arch/amiga/amiga/machdep.c    Mon Dec 12 18:59:06 2011 +0000
+++ b/sys/arch/amiga/amiga/machdep.c    Mon Dec 12 19:03:07 2011 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: machdep.c,v 1.235 2011/11/17 07:45:53 mlelstv Exp $    */
+/*     $NetBSD: machdep.c,v 1.236 2011/12/12 19:03:08 mrg Exp $        */
 
 /*
  * Copyright (c) 1988 University of Utah.
@@ -48,7 +48,7 @@
 #include "opt_m68k_arch.h"
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: machdep.c,v 1.235 2011/11/17 07:45:53 mlelstv Exp $");
+__KERNEL_RCSID(0, "$NetBSD: machdep.c,v 1.236 2011/12/12 19:03:08 mrg Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -449,7 +449,6 @@
 {
        cpu_kcore_hdr_t *h = &cpu_kcore_hdr;
        struct m68k_kcore_hdr *m = &h->un._m68k;
-       const struct bdevsw *bdev;
        int nblks;
        int i;
        extern int end[];
@@ -510,12 +509,12 @@
                m->ram_segs[1].size  = memlist->m_seg[i].ms_size;
                break;
        }
-       if ((bdev = bdevsw_lookup(dumpdev)) == NULL) {
+       if (bdevsw_lookup(dumpdev) == NULL) {
                dumpdev = NODEV;
                return;
        }
-       if (bdev->d_psize != NULL) {
-               nblks = (*bdev->d_psize)(dumpdev);
+       nblks = bdev_size(dumpdev);
+       if (nblks > 0) {
                if (dumpsize > btoc(dbtob(nblks - dumplo)))
                        dumpsize = btoc(dbtob(nblks - dumplo));
                else if (dumplo == 0)
@@ -577,7 +576,7 @@
        printf("\ndumping to dev %u,%u offset %ld\n", major(dumpdev),
            minor(dumpdev), dumplo);
 
-       psize = (*bdev->d_psize)(dumpdev);
+       psize = bdev_size(dumpdev);
        printf("dump ");
        if (psize == -1) {
                printf("area unavailable.\n");
diff -r 72da54636aba -r d76b606ffd7c sys/arch/arm/arm32/stubs.c
--- a/sys/arch/arm/arm32/stubs.c        Mon Dec 12 18:59:06 2011 +0000
+++ b/sys/arch/arm/arm32/stubs.c        Mon Dec 12 19:03:07 2011 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: stubs.c,v 1.22 2009/11/07 07:27:41 cegger Exp $        */
+/*     $NetBSD: stubs.c,v 1.23 2011/12/12 19:03:08 mrg Exp $   */
 
 /*
  * Copyright (c) 1994-1998 Mark Brinicombe.
@@ -41,7 +41,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: stubs.c,v 1.22 2009/11/07 07:27:41 cegger Exp $");
+__KERNEL_RCSID(0, "$NetBSD: stubs.c,v 1.23 2011/12/12 19:03:08 mrg Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -86,17 +86,11 @@
 void
 cpu_dumpconf(void)
 {
-       const struct bdevsw *bdev;
        int nblks, dumpblks;    /* size of dump area */
 
        if (dumpdev == NODEV)
                return;
-       bdev = bdevsw_lookup(dumpdev);
-       if (bdev == NULL)
-               panic("dumpconf: bad dumpdev=0x%"PRIx64"", dumpdev);
-       if (bdev->d_psize == NULL)
-               return;
-       nblks = (*bdev->d_psize)(dumpdev);
+       nblks = bdev_size(dumpdev);
        if (nblks <= ctod(1))
                return;
 
@@ -248,7 +242,7 @@
        bdev = bdevsw_lookup(dumpdev);
        if (bdev == NULL || bdev->d_psize == NULL)
                return;
-       psize = (*bdev->d_psize)(dumpdev);
+       psize = bdev_size(dumpdev);
        printf("dump ");
        if (psize == -1) {
                printf("area unavailable\n");
diff -r 72da54636aba -r d76b606ffd7c sys/arch/atari/atari/machdep.c
--- a/sys/arch/atari/atari/machdep.c    Mon Dec 12 18:59:06 2011 +0000
+++ b/sys/arch/atari/atari/machdep.c    Mon Dec 12 19:03:07 2011 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: machdep.c,v 1.172 2011/06/12 03:35:39 rmind Exp $      */
+/*     $NetBSD: machdep.c,v 1.173 2011/12/12 19:03:08 mrg Exp $        */
 
 /*
  * Copyright (c) 1988 University of Utah.
@@ -39,7 +39,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: machdep.c,v 1.172 2011/06/12 03:35:39 rmind Exp $");
+__KERNEL_RCSID(0, "$NetBSD: machdep.c,v 1.173 2011/12/12 19:03:08 mrg Exp $");
 
 #include "opt_ddb.h"
 #include "opt_compat_netbsd.h"
@@ -393,7 +393,6 @@
 void
 cpu_dumpconf(void)
 {
-       const struct bdevsw *bdev;
        int     nblks, i;
 
        for (i = dumpsize = 0; i < NMEM_SEGS; i++) {
@@ -404,13 +403,8 @@
        dumpsize = btoc(dumpsize);
 
        if (dumpdev != NODEV) {
-               bdev = bdevsw_lookup(dumpdev);
-               if (bdev == NULL) {
-                       dumpdev = NODEV;
-                       return;
-               }
-               if (bdev->d_psize != NULL) {
-                       nblks = (*bdev->d_psize)(dumpdev);
+               nblks = bdev_size(dumpdev);
+               if (nblks > 0) {
                        if (dumpsize > btoc(dbtob(nblks - dumplo)))
                                dumpsize = btoc(dbtob(nblks - dumplo));
                        else if (dumplo == 0)
diff -r 72da54636aba -r d76b606ffd7c sys/arch/cesfic/cesfic/machdep.c
--- a/sys/arch/cesfic/cesfic/machdep.c  Mon Dec 12 18:59:06 2011 +0000
+++ b/sys/arch/cesfic/cesfic/machdep.c  Mon Dec 12 19:03:07 2011 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: machdep.c,v 1.60 2011/06/12 03:35:40 rmind Exp $       */
+/*     $NetBSD: machdep.c,v 1.61 2011/12/12 19:03:09 mrg Exp $ */
 
 /*
  * Copyright (c) 1988 University of Utah.
@@ -39,7 +39,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: machdep.c,v 1.60 2011/06/12 03:35:40 rmind Exp $");
+__KERNEL_RCSID(0, "$NetBSD: machdep.c,v 1.61 2011/12/12 19:03:09 mrg Exp $");
 
 #include "opt_bufcache.h"
 #include "opt_ddb.h"
@@ -388,19 +388,11 @@
 void
 cpu_dumpconf(void)
 {
-       const struct bdevsw *bdev;
        int nblks;      /* size of dump area */
 
        if (dumpdev == NODEV)
                return;
-       bdev = bdevsw_lookup(dumpdev);
-       if (bdev == NULL) {
-               dumpdev = NODEV;
-               return;
-       }
-       if (bdev->d_psize == NULL)
-               return;
-       nblks = (*bdev->d_psize)(dumpdev);
+       nblks = bdev_size(dumpdev);
        if (nblks <= ctod(1))
                return;
 
diff -r 72da54636aba -r d76b606ffd7c sys/arch/hp300/hp300/machdep.c
--- a/sys/arch/hp300/hp300/machdep.c    Mon Dec 12 18:59:06 2011 +0000
+++ b/sys/arch/hp300/hp300/machdep.c    Mon Dec 12 19:03:07 2011 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: machdep.c,v 1.223 2011/06/12 03:35:40 rmind Exp $      */
+/*     $NetBSD: machdep.c,v 1.224 2011/12/12 19:03:09 mrg Exp $        */
 
 /*
  * Copyright (c) 1988 University of Utah.
@@ -39,7 +39,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: machdep.c,v 1.223 2011/06/12 03:35:40 rmind Exp $");
+__KERNEL_RCSID(0, "$NetBSD: machdep.c,v 1.224 2011/12/12 19:03:09 mrg Exp $");
 
 #include "opt_ddb.h"
 #include "opt_compat_netbsd.h"
@@ -745,20 +745,12 @@
 void
 cpu_dumpconf(void)
 {
-       const struct bdevsw *bdev;
        int chdrsize;   /* size of dump header */
        int nblks;      /* size of dump area */
 



Home | Main Index | Thread Index | Old Index