Module Name:    src
Committed By:   mlelstv
Date:           Mon Jan 25 15:30:44 UTC 2010

Modified Files:
        src/sys/fs/msdosfs: msdosfs_vfsops.c

Log Message:
Fetch sector size also from wedges.


To generate a diff of this commit:
cvs rdiff -u -r1.76 -r1.77 src/sys/fs/msdosfs/msdosfs_vfsops.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_vfsops.c
diff -u src/sys/fs/msdosfs/msdosfs_vfsops.c:1.76 src/sys/fs/msdosfs/msdosfs_vfsops.c:1.77
--- src/sys/fs/msdosfs/msdosfs_vfsops.c:1.76	Mon Jun 29 05:08:17 2009
+++ src/sys/fs/msdosfs/msdosfs_vfsops.c	Mon Jan 25 15:30:44 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: msdosfs_vfsops.c,v 1.76 2009/06/29 05:08:17 dholland Exp $	*/
+/*	$NetBSD: msdosfs_vfsops.c,v 1.77 2010/01/25 15:30:44 mlelstv Exp $	*/
 
 /*-
  * Copyright (C) 1994, 1995, 1997 Wolfgang Solfrank.
@@ -48,7 +48,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: msdosfs_vfsops.c,v 1.76 2009/06/29 05:08:17 dholland Exp $");
+__KERNEL_RCSID(0, "$NetBSD: msdosfs_vfsops.c,v 1.77 2010/01/25 15:30:44 mlelstv Exp $");
 
 #if defined(_KERNEL_OPT)
 #include "opt_compat_netbsd.h"
@@ -501,6 +501,7 @@
 		psize = dpart.part->p_size;
 	} else {
 		struct dkwedge_info dkw;
+		struct disk *pdk;
 		error = VOP_IOCTL(devvp, DIOCGWEDGEINFO, &dkw, FREAD, NOCRED);
 		secsize = 512;	/* XXX */
 		dtype = DTYPE_FLOPPY; /* XXX */
@@ -513,6 +514,12 @@
 				goto error_exit;
 			}
 		} else {
+			pdk = disk_find(dkw.dkw_parent);
+			if (pdk == NULL) {
+				error = ENODEV;
+				goto error_exit;
+			}
+			secsize = DEV_BSIZE << pdk->dk_blkshift;
 			fstype = strcmp(dkw.dkw_ptype, DKW_PTYPE_FAT) == 0 ?
 			    FS_MSDOS : -1;
 			psize = dkw.dkw_size;

Reply via email to