? difz ? kern/difz Index: arch/alpha/alpha/machdep.c =================================================================== RCS file: /cvsroot/src/sys/arch/alpha/alpha/machdep.c,v retrieving revision 1.335 diff -p -u -r1.335 machdep.c --- arch/alpha/alpha/machdep.c 12 Jun 2011 03:35:37 -0000 1.335 +++ arch/alpha/alpha/machdep.c 12 Dec 2011 01:50:54 -0000 @@ -1165,19 +1165,11 @@ cpu_dump(void) 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_psize(dumpdev); if (nblks <= ctod(1)) goto bad; @@ -1241,7 +1233,7 @@ dumpsys(void) printf("\ndumping to dev %u,%u offset %ld\n", major(dumpdev), minor(dumpdev), dumplo); - psize = (*bdev->d_psize)(dumpdev); + psize = bdev_psize(dumpdev); printf("dump "); if (psize == -1) { printf("area unavailable\n"); Index: arch/amd64/amd64/machdep.c =================================================================== RCS file: /cvsroot/src/sys/arch/amd64/amd64/machdep.c,v retrieving revision 1.172 diff -p -u -r1.172 machdep.c --- arch/amd64/amd64/machdep.c 4 Dec 2011 16:24:13 -0000 1.172 +++ arch/amd64/amd64/machdep.c 12 Dec 2011 01:50:55 -0000 @@ -1226,7 +1226,7 @@ dodumpsys(void) (unsigned long long)major(dumpdev), (unsigned long long)minor(dumpdev), dumplo); - psize = (*bdev->d_psize)(dumpdev); + psize = bdev_psize(dumpdev); printf("dump "); if (psize == -1) { printf("area unavailable\n"); @@ -1323,19 +1323,11 @@ failed: 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_psize(dumpdev); if (nblks <= ctod(1)) goto bad; Index: arch/amiga/amiga/machdep.c =================================================================== RCS file: /cvsroot/src/sys/arch/amiga/amiga/machdep.c,v retrieving revision 1.235 diff -p -u -r1.235 machdep.c --- arch/amiga/amiga/machdep.c 17 Nov 2011 07:45:53 -0000 1.235 +++ arch/amiga/amiga/machdep.c 12 Dec 2011 01:50:55 -0000 @@ -449,7 +449,6 @@ cpu_dumpconf(void) { 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 @@ cpu_dumpconf(void) 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_psize(dumpdev); + if (nblks > 0) { if (dumpsize > btoc(dbtob(nblks - dumplo))) dumpsize = btoc(dbtob(nblks - dumplo)); else if (dumplo == 0) @@ -577,7 +576,7 @@ dumpsys(void) printf("\ndumping to dev %u,%u offset %ld\n", major(dumpdev), minor(dumpdev), dumplo); - psize = (*bdev->d_psize)(dumpdev); + psize = bdev_psize(dumpdev); printf("dump "); if (psize == -1) { printf("area unavailable.\n"); Index: arch/arm/arm32/stubs.c =================================================================== RCS file: /cvsroot/src/sys/arch/arm/arm32/stubs.c,v retrieving revision 1.22 diff -p -u -r1.22 stubs.c --- arch/arm/arm32/stubs.c 7 Nov 2009 07:27:41 -0000 1.22 +++ arch/arm/arm32/stubs.c 12 Dec 2011 01:50:55 -0000 @@ -86,17 +86,11 @@ struct pcb dumppcb; 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_psize(dumpdev); if (nblks <= ctod(1)) return; @@ -248,7 +242,7 @@ dodumpsys(void) bdev = bdevsw_lookup(dumpdev); if (bdev == NULL || bdev->d_psize == NULL) return; - psize = (*bdev->d_psize)(dumpdev); + psize = bdev_psize(dumpdev); printf("dump "); if (psize == -1) { printf("area unavailable\n"); Index: arch/atari/atari/machdep.c =================================================================== RCS file: /cvsroot/src/sys/arch/atari/atari/machdep.c,v retrieving revision 1.172 diff -p -u -r1.172 machdep.c --- arch/atari/atari/machdep.c 12 Jun 2011 03:35:39 -0000 1.172 +++ arch/atari/atari/machdep.c 12 Dec 2011 01:50:55 -0000 @@ -393,7 +393,6 @@ long dumplo = 0; /* (disk blocks) * void cpu_dumpconf(void) { - const struct bdevsw *bdev; int nblks, i; for (i = dumpsize = 0; i < NMEM_SEGS; i++) { @@ -404,13 +403,8 @@ cpu_dumpconf(void) 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_psize(dumpdev); + if (nblks > 0) { if (dumpsize > btoc(dbtob(nblks - dumplo))) dumpsize = btoc(dbtob(nblks - dumplo)); else if (dumplo == 0) Index: arch/cesfic/cesfic/machdep.c =================================================================== RCS file: /cvsroot/src/sys/arch/cesfic/cesfic/machdep.c,v retrieving revision 1.60 diff -p -u -r1.60 machdep.c --- arch/cesfic/cesfic/machdep.c 12 Jun 2011 03:35:40 -0000 1.60 +++ arch/cesfic/cesfic/machdep.c 12 Dec 2011 01:50:55 -0000 @@ -388,19 +388,11 @@ long dumplo = 0; /* blocks */ 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_psize(dumpdev); if (nblks <= ctod(1)) return; Index: arch/hp300/hp300/machdep.c =================================================================== RCS file: /cvsroot/src/sys/arch/hp300/hp300/machdep.c,v retrieving revision 1.223 diff -p -u -r1.223 machdep.c --- arch/hp300/hp300/machdep.c 12 Jun 2011 03:35:40 -0000 1.223 +++ arch/hp300/hp300/machdep.c 12 Dec 2011 01:50:55 -0000 @@ -745,20 +745,12 @@ long dumplo = 0; /* blocks */ void cpu_dumpconf(void) { - const struct bdevsw *bdev; int chdrsize; /* size of dump header */ 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_psize(dumpdev); chdrsize = cpu_dumpsize(); dumpsize = btoc(cpu_kcore_hdr.un._m68k.ram_segs[0].size); Index: arch/hp700/hp700/autoconf.c =================================================================== RCS file: /cvsroot/src/sys/arch/hp700/hp700/autoconf.c,v retrieving revision 1.39 diff -p -u -r1.39 autoconf.c --- arch/hp700/hp700/autoconf.c 23 Jan 2011 09:44:58 -0000 1.39 +++ arch/hp700/hp700/autoconf.c 12 Dec 2011 01:50:55 -0000 @@ -293,20 +293,12 @@ hp700_led_blinker(void *arg) void cpu_dumpconf(void) { - const struct bdevsw *bdev; extern int dumpsize; 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_psize(dumpdev); if (nblks <= ctod(1)) goto bad; dumpblks = cpu_dumpsize(); Index: arch/hp700/hp700/machdep.c =================================================================== RCS file: /cvsroot/src/sys/arch/hp700/hp700/machdep.c,v retrieving revision 1.101 diff -p -u -r1.101 machdep.c --- arch/hp700/hp700/machdep.c 5 Dec 2011 15:04:27 -0000 1.101 +++ arch/hp700/hp700/machdep.c 12 Dec 2011 01:50:56 -0000 @@ -1809,7 +1809,7 @@ dumpsys(void) printf("\ndumping to dev %u,%u offset %ld\n", major(dumpdev), minor(dumpdev), dumplo); - psize = (*bdev->d_psize)(dumpdev); + psize = bdev_psize(dumpdev); printf("dump "); if (psize == -1) { printf("area unavailable\n"); Index: arch/i386/i386/dumpsys.c =================================================================== RCS file: /cvsroot/src/sys/arch/i386/i386/dumpsys.c,v retrieving revision 1.15 diff -p -u -r1.15 dumpsys.c --- arch/i386/i386/dumpsys.c 20 Nov 2011 18:41:12 -0000 1.15 +++ arch/i386/i386/dumpsys.c 12 Dec 2011 01:50:56 -0000 @@ -177,7 +177,7 @@ dodumpsys(void) (unsigned long long)major(dumpdev), (unsigned long long)minor(dumpdev), dumplo); - psize = (*bdev->d_psize)(dumpdev); + psize = bdev_psize(dumpdev); printf("dump "); if (psize == -1) { printf("area unavailable\n"); @@ -274,19 +274,11 @@ failed: 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_psize(dumpdev); if (nblks <= ctod(1)) goto bad; Index: arch/luna68k/luna68k/machdep.c =================================================================== RCS file: /cvsroot/src/sys/arch/luna68k/luna68k/machdep.c,v retrieving revision 1.88 diff -p -u -r1.88 machdep.c --- arch/luna68k/luna68k/machdep.c 26 Nov 2011 04:32:46 -0000 1.88 +++ arch/luna68k/luna68k/machdep.c 12 Dec 2011 01:50:56 -0000 @@ -536,20 +536,12 @@ long dumplo = 0; /* blocks */ void cpu_dumpconf(void) { - const struct bdevsw *bdev; int chdrsize; /* size of dump header */ 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_psize(dumpdev); chdrsize = cpu_dumpsize(); dumpsize = btoc(cpu_kcore_hdr.un._m68k.ram_segs[0].size); Index: arch/mac68k/mac68k/machdep.c =================================================================== RCS file: /cvsroot/src/sys/arch/mac68k/mac68k/machdep.c,v retrieving revision 1.341 diff -p -u -r1.341 machdep.c --- arch/mac68k/mac68k/machdep.c 12 Jun 2011 03:35:43 -0000 1.341 +++ arch/mac68k/mac68k/machdep.c 12 Dec 2011 01:50:56 -0000 @@ -639,7 +639,6 @@ cpu_dumpconf(void) { cpu_kcore_hdr_t *h = &cpu_kcore_hdr; struct m68k_kcore_hdr *m = &h->un._m68k; - const struct bdevsw *bdev; int chdrsize; /* size of dump header */ int nblks; /* size of dump area */ int i; @@ -647,14 +646,7 @@ cpu_dumpconf(void) 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_psize(dumpdev); chdrsize = cpu_dumpsize(); dumpsize = 0; Index: arch/mips/mips/mips_machdep.c =================================================================== RCS file: /cvsroot/src/sys/arch/mips/mips/mips_machdep.c,v retrieving revision 1.250 diff -p -u -r1.250 mips_machdep.c --- arch/mips/mips/mips_machdep.c 29 Oct 2011 18:56:49 -0000 1.250 +++ arch/mips/mips/mips_machdep.c 12 Dec 2011 01:50:56 -0000 @@ -1787,19 +1787,11 @@ cpu_dump(void) 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_psize(dumpdev); if (nblks <= ctod(1)) goto bad; @@ -1864,7 +1856,7 @@ dumpsys(void) printf("\ndumping to dev %u,%u offset %ld\n", major(dumpdev), minor(dumpdev), dumplo); - psize = (*bdev->d_psize)(dumpdev); + psize = bdev_psize(dumpdev); printf("dump "); if (psize == -1) { printf("area unavailable\n"); Index: arch/mvme68k/mvme68k/machdep.c =================================================================== RCS file: /cvsroot/src/sys/arch/mvme68k/mvme68k/machdep.c,v retrieving revision 1.149 diff -p -u -r1.149 machdep.c --- arch/mvme68k/mvme68k/machdep.c 12 Jun 2011 03:35:44 -0000 1.149 +++ arch/mvme68k/mvme68k/machdep.c 12 Dec 2011 01:50:56 -0000 @@ -837,19 +837,11 @@ long dumplo = 0; /* blocks */ 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_psize(dumpdev); if (nblks <= ctod(1)) goto bad; @@ -909,7 +901,7 @@ dumpsys(void) printf("\ndumping to dev %u,%u offset %ld\n", major(dumpdev), minor(dumpdev), dumplo); - psize = (*bdev->d_psize)(dumpdev); + psize = bdev_psize(dumpdev); printf("dump "); if (psize == -1) { printf("area unavailable\n"); Index: arch/news68k/news68k/machdep.c =================================================================== RCS file: /cvsroot/src/sys/arch/news68k/news68k/machdep.c,v retrieving revision 1.97 diff -p -u -r1.97 machdep.c --- arch/news68k/news68k/machdep.c 22 Nov 2011 14:31:02 -0000 1.97 +++ arch/news68k/news68k/machdep.c 12 Dec 2011 01:50:56 -0000 @@ -472,20 +472,12 @@ long dumplo = 0; /* blocks */ void cpu_dumpconf(void) { - const struct bdevsw *bdev; int chdrsize; /* size of dump header */ 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_psize(dumpdev); chdrsize = cpu_dumpsize(); dumpsize = btoc(cpu_kcore_hdr.un._m68k.ram_segs[0].size); Index: arch/next68k/next68k/machdep.c =================================================================== RCS file: /cvsroot/src/sys/arch/next68k/next68k/machdep.c,v retrieving revision 1.105 diff -p -u -r1.105 machdep.c --- arch/next68k/next68k/machdep.c 12 Jun 2011 03:35:45 -0000 1.105 +++ arch/next68k/next68k/machdep.c 12 Dec 2011 01:50:56 -0000 @@ -621,20 +621,12 @@ long dumplo = 0; /* blocks */ void cpu_dumpconf(void) { - const struct bdevsw *bdev; int chdrsize; /* size of dump header */ 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_psize(dumpdev); chdrsize = cpu_dumpsize(); dumpsize = btoc(cpu_kcore_hdr.un._m68k.ram_segs[0].size); Index: arch/powerpc/powerpc/powerpc_machdep.c =================================================================== RCS file: /cvsroot/src/sys/arch/powerpc/powerpc/powerpc_machdep.c,v retrieving revision 1.60 diff -p -u -r1.60 powerpc_machdep.c --- arch/powerpc/powerpc/powerpc_machdep.c 31 Jul 2011 10:00:52 -0000 1.60 +++ arch/powerpc/powerpc/powerpc_machdep.c 12 Dec 2011 01:50:56 -0000 @@ -280,20 +280,12 @@ long dumplo = -1; /* blocks */ void cpu_dumpconf(void) { - const struct bdevsw *bdev; int nblks; /* size of dump device */ int skip; 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_psize(dumpdev); if (nblks <= ctod(1)) return; Index: arch/sparc/sparc/machdep.c =================================================================== RCS file: /cvsroot/src/sys/arch/sparc/sparc/machdep.c,v retrieving revision 1.313 diff -p -u -r1.313 machdep.c --- arch/sparc/sparc/machdep.c 17 Jul 2011 23:29:10 -0000 1.313 +++ arch/sparc/sparc/machdep.c 12 Dec 2011 01:50:56 -0000 @@ -938,16 +938,11 @@ long dumplo = 0; void cpu_dumpconf(void) { - const struct bdevsw *bdev; int nblks, dumpblks; if (dumpdev == NODEV) return; - bdev = bdevsw_lookup(dumpdev); - if (bdev == NULL || bdev->d_psize == NULL) - return; - - nblks = (*bdev->d_psize)(dumpdev); + nblks = bdev_psize(dumpdev); dumpblks = ctod(physmem) + pmap_dumpsize(); if (dumpblks > (nblks - ctod(1))) @@ -1019,7 +1014,7 @@ dumpsys(void) printf("\ndumping to dev %u,%u offset %ld\n", major(dumpdev), minor(dumpdev), dumplo); - psize = (*bdev->d_psize)(dumpdev); + psize = bdev_psize(dumpdev); printf("dump "); if (psize == -1) { printf("area unavailable\n"); Index: arch/sparc64/sparc64/machdep.c =================================================================== RCS file: /cvsroot/src/sys/arch/sparc64/sparc64/machdep.c,v retrieving revision 1.262 diff -p -u -r1.262 machdep.c --- arch/sparc64/sparc64/machdep.c 8 Oct 2011 08:49:07 -0000 1.262 +++ arch/sparc64/sparc64/machdep.c 12 Dec 2011 01:50:57 -0000 @@ -698,18 +698,12 @@ long dumplo = 0; void cpu_dumpconf(void) { - const struct bdevsw *bdev; int nblks, dumpblks; if (dumpdev == NODEV) /* No usable dump device */ return; - bdev = bdevsw_lookup(dumpdev); - if (bdev == NULL || bdev->d_psize == NULL) - /* No usable dump device */ - return; - - nblks = (*bdev->d_psize)(dumpdev); + nblks = bdev_psize(dumpdev); dumpblks = ctod(physmem) + pmap_dumpsize(); if (dumpblks > (nblks - ctod(1))) @@ -784,7 +778,7 @@ dumpsys(void) printf("\ndumping to dev %" PRId32 ",%" PRId32 " offset %ld\n", major(dumpdev), minor(dumpdev), dumplo); - psize = (*bdev->d_psize)(dumpdev); + psize = bdev_psize(dumpdev); if (psize == -1) { printf("dump area unavailable\n"); return; Index: arch/sun2/sun2/machdep.c =================================================================== RCS file: /cvsroot/src/sys/arch/sun2/sun2/machdep.c,v retrieving revision 1.70 diff -p -u -r1.70 machdep.c --- arch/sun2/sun2/machdep.c 12 Jun 2011 03:35:47 -0000 1.70 +++ arch/sun2/sun2/machdep.c 12 Dec 2011 01:50:57 -0000 @@ -566,23 +566,13 @@ long dumplo = 0; /* blocks */ void cpu_dumpconf(void) { - const struct bdevsw *bdev; int devblks; /* size of dump device in blocks */ int dumpblks; /* size of dump image in blocks */ - int (*getsize)(dev_t); if (dumpdev == NODEV) return; - bdev = bdevsw_lookup(dumpdev); - if (bdev == NULL) { - dumpdev = NODEV; - return; - } - getsize = bdev->d_psize; - if (getsize == NULL) - return; - devblks = (*getsize)(dumpdev); + devblks = bdev_psize(dumpdev); if (devblks <= ctod(1)) return; devblks &= ~(ctod(1)-1); @@ -651,7 +641,7 @@ dumpsys(void) } savectx(&dumppcb); - psize = (*(dsw->d_psize))(dumpdev); + psize = bdev_psize(dumpdev); if (psize == -1) { printf("dump area unavailable\n"); return; Index: arch/sun3/sun3/machdep.c =================================================================== RCS file: /cvsroot/src/sys/arch/sun3/sun3/machdep.c,v retrieving revision 1.203 diff -p -u -r1.203 machdep.c --- arch/sun3/sun3/machdep.c 14 Jun 2011 15:23:19 -0000 1.203 +++ arch/sun3/sun3/machdep.c 12 Dec 2011 01:50:57 -0000 @@ -483,23 +483,13 @@ long dumplo = 0; /* blocks */ void cpu_dumpconf(void) { - const struct bdevsw *bdev; int devblks; /* size of dump device in blocks */ int dumpblks; /* size of dump image in blocks */ - int (*getsize)(dev_t); if (dumpdev == NODEV) return; - bdev = bdevsw_lookup(dumpdev); - if (bdev == NULL) { - dumpdev = NODEV; - return; - } - getsize = bdev->d_psize; - if (getsize == NULL) - return; - devblks = (*getsize)(dumpdev); + devblks = bdev_psize(dumpdev); if (devblks <= ctod(1)) return; devblks &= ~(ctod(1)-1); @@ -568,7 +558,7 @@ dumpsys(void) } savectx(&dumppcb); - psize = (*(dsw->d_psize))(dumpdev); + psize = bdev_psize(dumpdev); if (psize == -1) { printf("dump area unavailable\n"); return; Index: arch/sun3/sun3x/machdep.c =================================================================== RCS file: /cvsroot/src/sys/arch/sun3/sun3x/machdep.c,v retrieving revision 1.130 diff -p -u -r1.130 machdep.c --- arch/sun3/sun3x/machdep.c 14 Jun 2011 15:23:19 -0000 1.130 +++ arch/sun3/sun3x/machdep.c 12 Dec 2011 01:50:57 -0000 @@ -473,23 +473,13 @@ long dumplo = 0; /* blocks */ void cpu_dumpconf(void) { - const struct bdevsw *bdev; int devblks; /* size of dump device in blocks */ int dumpblks; /* size of dump image in blocks */ - int (*getsize)(dev_t); if (dumpdev == NODEV) return; - bdev = bdevsw_lookup(dumpdev); - if (bdev == NULL) { - dumpdev = NODEV; - return; - } - getsize = bdev->d_psize; - if (getsize == NULL) - return; - devblks = (*getsize)(dumpdev); + devblks = bdev_psize(dumpdev); if (devblks <= ctod(1)) return; devblks &= ~(ctod(1) - 1); @@ -556,7 +546,7 @@ dumpsys(void) } savectx(&dumppcb); - psize = (*(dsw->d_psize))(dumpdev); + psize = bdev_psize(dumpdev); if (psize == -1) { printf("dump area unavailable\n"); return; Index: arch/vax/vax/machdep.c =================================================================== RCS file: /cvsroot/src/sys/arch/vax/vax/machdep.c,v retrieving revision 1.182 diff -p -u -r1.182 machdep.c --- arch/vax/vax/machdep.c 3 Jul 2011 02:18:21 -0000 1.182 +++ arch/vax/vax/machdep.c 12 Dec 2011 01:50:57 -0000 @@ -227,20 +227,15 @@ long dumplo = 0; void cpu_dumpconf(void) { - const struct bdevsw *bdev; - int nblks; + int nblks; /* * XXX include the final RAM page which is not included in physmem. */ if (dumpdev == NODEV) return; - bdev = bdevsw_lookup(dumpdev); - if (bdev == NULL) - return; - dumpsize = physmem + 1; - if (bdev->d_psize != NULL) { - nblks = (*bdev->d_psize)(dumpdev); + nblks = bdev_psize(dumpdev); + if (nblks > 0) { if (dumpsize > btoc(dbtob(nblks - dumplo))) dumpsize = btoc(dbtob(nblks - dumplo)); else if (dumplo == 0) Index: arch/x68k/x68k/machdep.c =================================================================== RCS file: /cvsroot/src/sys/arch/x68k/x68k/machdep.c,v retrieving revision 1.178 diff -p -u -r1.178 machdep.c --- arch/x68k/x68k/machdep.c 12 Jun 2011 03:35:49 -0000 1.178 +++ arch/x68k/x68k/machdep.c 12 Dec 2011 01:50:57 -0000 @@ -585,21 +585,13 @@ cpu_dumpconf(void) { cpu_kcore_hdr_t *h = &cpu_kcore_hdr; struct m68k_kcore_hdr *m = &h->un._m68k; - const struct bdevsw *bdev; int chdrsize; /* size of dump header */ int nblks; /* size of dump area */ int i; 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_psize(dumpdev); chdrsize = cpu_dumpsize(); dumpsize = 0; Index: kern/subr_devsw.c =================================================================== RCS file: /cvsroot/src/sys/kern/subr_devsw.c,v retrieving revision 1.28 diff -p -u -r1.28 subr_devsw.c --- kern/subr_devsw.c 3 Sep 2009 11:42:21 -0000 1.28 +++ kern/subr_devsw.c 12 Dec 2011 01:50:58 -0000 @@ -79,6 +79,7 @@ __KERNEL_RCSID(0, "$NetBSD: subr_devsw.c #include #include #include +#include #ifdef DEVSW_DEBUG #define DPRINTF(x) printf x @@ -793,6 +794,28 @@ bdev_type(dev_t dev) } int +bdev_psize(dev_t dev) +{ + const struct bdevsw *d; + int rv, mpflag = 0; + + if ((d = bdevsw_lookup(dev)) == NULL || + d->d_psize == NULL) + return -1; + + /* + * Don't to try lock the device if we're dumping. + */ + if ((boothowto & RB_DUMP) == 0) + DEV_LOCK(d); + rv = (*d->d_psize)(dev); + if ((boothowto & RB_DUMP) == 0) + DEV_UNLOCK(d); + + return rv; +} + +int cdev_open(dev_t dev, int flag, int devtype, lwp_t *l) { const struct cdevsw *d; Index: sys/conf.h =================================================================== RCS file: /cvsroot/src/sys/sys/conf.h,v retrieving revision 1.140 diff -p -u -r1.140 conf.h --- sys/conf.h 12 Jun 2011 03:35:59 -0000 1.140 +++ sys/conf.h 12 Dec 2011 01:50:58 -0000 @@ -166,6 +166,7 @@ dev_type_kqfilter(cdev_kqfilter); int cdev_type(dev_t); int bdev_type(dev_t); +int bdev_psize(dev_t); /* symbolic sleep message strings */ extern const char devopn[], devio[], devwait[], devin[], devout[]; Index: uvm/uvm_swap.c =================================================================== RCS file: /cvsroot/src/sys/uvm/uvm_swap.c,v retrieving revision 1.157 diff -p -u -r1.157 uvm_swap.c --- uvm/uvm_swap.c 2 Sep 2011 22:25:08 -0000 1.157 +++ uvm/uvm_swap.c 12 Dec 2011 01:50:58 -0000 @@ -819,7 +819,6 @@ swap_on(struct lwp *l, struct swapdev *s long addr; vmem_addr_t result; struct vattr va; - const struct bdevsw *bdev; dev_t dev; UVMHIST_FUNC("swap_on"); UVMHIST_CALLED(pdhist); @@ -858,9 +857,7 @@ swap_on(struct lwp *l, struct swapdev *s */ switch (vp->v_type) { case VBLK: - bdev = bdevsw_lookup(dev); - if (bdev == NULL || bdev->d_psize == NULL || - (nblocks = (*bdev->d_psize)(dev)) == -1) { + if ((nblocks = bdev_psize(dev)) == -1) { error = ENXIO; goto bad; }