Module Name: src Committed By: hannken Date: Thu Dec 20 11:44:39 UTC 2012
Modified Files: src/sys/fs/msdosfs: msdosfs_fat.c Log Message: Revert rev. 1.20 now that bread() has been fixed. PR kern/46282 (6.0_BETA crash: msdosfs_bmap -> pcbmap -> bread -> bio_doread) To generate a diff of this commit: cvs rdiff -u -r1.22 -r1.23 src/sys/fs/msdosfs/msdosfs_fat.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/fs/msdosfs/msdosfs_fat.c diff -u src/sys/fs/msdosfs/msdosfs_fat.c:1.22 src/sys/fs/msdosfs/msdosfs_fat.c:1.23 --- src/sys/fs/msdosfs/msdosfs_fat.c:1.22 Thu Dec 20 08:03:42 2012 +++ src/sys/fs/msdosfs/msdosfs_fat.c Thu Dec 20 11:44:39 2012 @@ -1,4 +1,4 @@ -/* $NetBSD: msdosfs_fat.c,v 1.22 2012/12/20 08:03:42 hannken Exp $ */ +/* $NetBSD: msdosfs_fat.c,v 1.23 2012/12/20 11:44:39 hannken Exp $ */ /*- * Copyright (C) 1994, 1995, 1997 Wolfgang Solfrank. @@ -48,7 +48,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: msdosfs_fat.c,v 1.22 2012/12/20 08:03:42 hannken Exp $"); +__KERNEL_RCSID(0, "$NetBSD: msdosfs_fat.c,v 1.23 2012/12/20 11:44:39 hannken Exp $"); /* * kernel include files. @@ -254,26 +254,10 @@ pcbmap(struct denode *dep, u_long findcn if (bn != bp_bn) { if (bp) brelse(bp, 0); - bp = getblk(pmp->pm_devvp, de_bn2kb(pmp, bn), bsize, - 0, 0); - if (bp == NULL) { - /* - * getblk() above returns NULL only iff we are - * pagedaemon. See the implementation of getblk - * for detail. - */ - return ENOMEM; - } - if (!ISSET(bp->b_oflags, (BO_DONE | BO_DELWRI))) { - SET(bp->b_flags, B_READ); - BIO_SETPRIO(bp, BPRIO_TIMECRITICAL); - VOP_STRATEGY(pmp->pm_devvp, bp); - curlwp->l_ru.ru_inblock++; - error = biowait(bp); - if (error) { - brelse(bp, 0); - return error; - } + error = bread(pmp->pm_devvp, de_bn2kb(pmp, bn), bsize, + NOCRED, 0, &bp); + if (error) { + return (error); } bp_bn = bn; }