Source-Changes-HG archive

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

[src/trunk]: src/sbin/fsck Change getdiskinfo() to no longer infer the partit...



details:   https://anonhg.NetBSD.org/src/rev/cc3e87df2f78
branches:  trunk
changeset: 372882:cc3e87df2f78
user:      hannken <hannken%NetBSD.org@localhost>
date:      Mon Jan 02 16:08:13 2023 +0000

description:
Change getdiskinfo() to no longer infer the partition from the device name.
Since 2016-06-16 we create disk devices "<type><<unit>" as an alias
for "<type><<unit><part>" where "<part>" is the raw partition.
These devices are treated as invalid partitions and a zero geometry
is returned.

Take the partition from "st_rdev" instead.

Fix for PR kern/57134: st_size of stat on vnd raw partition sometimes
is 0, causing newfs to fail

diffstat:

 sbin/fsck/partutil.c |  9 ++++-----
 1 files changed, 4 insertions(+), 5 deletions(-)

diffs (30 lines):

diff -r de83b96ac1f8 -r cc3e87df2f78 sbin/fsck/partutil.c
--- a/sbin/fsck/partutil.c      Mon Jan 02 00:55:45 2023 +0000
+++ b/sbin/fsck/partutil.c      Mon Jan 02 16:08:13 2023 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: partutil.c,v 1.17 2019/09/28 18:03:18 bad Exp $        */
+/*     $NetBSD: partutil.c,v 1.18 2023/01/02 16:08:13 hannken Exp $    */
 
 /*-
  * Copyright (c) 2006 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include <sys/cdefs.h>
-__RCSID("$NetBSD: partutil.c,v 1.17 2019/09/28 18:03:18 bad Exp $");
+__RCSID("$NetBSD: partutil.c,v 1.18 2023/01/02 16:08:13 hannken Exp $");
 
 #include <sys/types.h>
 #include <sys/param.h>
@@ -155,9 +155,8 @@
        if (stat(s, &sb) == -1)
                return 0;
 
-       ptn = strchr(s, '\0')[-1] - 'a';
-       if ((unsigned)ptn >= lp->d_npartitions ||
-           (devminor_t)ptn != DISKPART(sb.st_rdev))
+       ptn = DISKPART(sb.st_rdev);
+       if (ptn < 0 || ptn >= lp->d_npartitions)
                return 0;
 
        pp = &lp->d_partitions[ptn];



Home | Main Index | Thread Index | Old Index