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;
}