From owner-freebsd-questions Mon Nov 27 13: 9:27 2000 Delivered-To: freebsd-questions@freebsd.org Received: from mailhost01.reflexnet.net (mailhost01.reflexnet.net [64.6.192.82]) by hub.freebsd.org (Postfix) with ESMTP id 075D237B4C5 for ; Mon, 27 Nov 2000 13:09:22 -0800 (PST) Received: from 149.211.6.64.reflexcom.com ([64.6.211.149]) by mailhost01.reflexnet.net with Microsoft SMTPSVC(5.5.1877.197.19); Mon, 27 Nov 2000 13:07:41 -0800 Received: (from cjc@localhost) by 149.211.6.64.reflexcom.com (8.11.0/8.11.0) id eARL9BU79745 for freebsd-questions@freebsd.org; Mon, 27 Nov 2000 13:09:11 -0800 (PST) (envelope-from cjc) Date: Mon, 27 Nov 2000 13:09:11 -0800 From: "Crist J . Clark" To: freebsd-questions@freebsd.org Subject: Refreshing Kernel Slice Table w/o Rebooting Message-ID: <20001127130911.A79675@149.211.6.64.reflexcom.com> Reply-To: cjclark@alum.mit.edu Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Mailer: Mutt 1.0i Sender: owner-freebsd-questions@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.ORG I think I asked this once before but never got a response. Is there a way to refresh the in-kernel slice table without rebooting? I just resliced a disk on a running machine. Basically, I had set aside some space for other OSes when I first set up the box a few months ago. However, the role of the machine has changed and now I might as well (need to, actually) give all of the space to FreeBSD. I didn't touch slice 1, ad0s1, where FreeBSD lives, but expanded slice 2 to eat the whole disk and nuked slices 3 and 4. Here is the old table, ******* Working on device /dev/ad0 ******* parameters extracted from in-core disklabel are: cylinders=622 heads=255 sectors/track=63 (16065 blks/cyl) parameters to be used for BIOS calculations are: cylinders=622 heads=255 sectors/track=63 (16065 blks/cyl) Media sector size is 512 Warning: BIOS sector numbering starts with sector 1 Information from DOS bootblock is: The data for partition 1 is: sysid 165,(FreeBSD/NetBSD/386BSD) start 63, size 4996152 (2439 Meg), flag 80 (active) beg: cyl 0/ sector 1/ head 1; end: cyl 310/ sector 63/ head 254 The data for partition 2 is: sysid 130,(Linux swap or Solaris x86) start 4996215, size 192780 (94 Meg), flag 0 beg: cyl 311/ sector 1/ head 0; end: cyl 322/ sector 63/ head 254 The data for partition 3 is: sysid 131,(Linux filesystem) start 5188995, size 401625 (196 Meg), flag 0 beg: cyl 323/ sector 1/ head 0; end: cyl 347/ sector 63/ head 254 The data for partition 4 is: sysid 131,(Linux filesystem) start 5590620, size 4401810 (2149 Meg), flag 0 beg: cyl 348/ sector 1/ head 0; end: cyl 621/ sector 63/ head 254 And the new, ******* Working on device /dev/ad0 ******* parameters extracted from in-core disklabel are: cylinders=622 heads=255 sectors/track=63 (16065 blks/cyl) parameters to be used for BIOS calculations are: cylinders=622 heads=255 sectors/track=63 (16065 blks/cyl) Media sector size is 512 Warning: BIOS sector numbering starts with sector 1 Information from DOS bootblock is: The data for partition 1 is: sysid 165,(FreeBSD/NetBSD/386BSD) start 63, size 4996152 (2439 Meg), flag 80 (active) beg: cyl 0/ sector 1/ head 1; end: cyl 310/ sector 63/ head 254 The data for partition 2 is: sysid 165,(FreeBSD/NetBSD/386BSD) start 4996215, size 4996215 (2439 Meg), flag 0 beg: cyl 311/ sector 1/ head 0; end: cyl 621/ sector 63/ head 254 The data for partition 3 is: The data for partition 4 is: After I did the reslice, I wanted to put a FreeBSD disklabel on the new slice so I ran, # disklabel -r -w ad0s2 auto Which succeded with no errors, but when I check the label, # disklabel ad0s2 # /dev/ad0s2: type: ESDI disk: ad0s2 label: flags: bytes/sector: 512 sectors/track: 63 tracks/cylinder: 255 sectors/cylinder: 16065 cylinders: 12 sectors/unit: 192780 rpm: 3600 interleave: 1 trackskew: 0 cylinderskew: 0 headswitch: 0 # milliseconds track-to-track seek: 0 # milliseconds drivedata: 0 8 partitions: # size offset fstype [fsize bsize bps/cpg] c: 192780 0 unused 0 0 # (Cyl. 0 - 11) We see this is a lot smaller than the new big slice. If we examine more closely, we see that this is what we would have expected for the _old_ slice 2. If I try manually edit the label to the new size I get, # disklabel -e ad0s2 disklabel: No space left on device re-edit the label? [y]: I cannot write the correct label to the disk. It seems the kernel remembers the old slice table, and I can't figure out how to load the new one in there. I had this problem once in the past, but it was just an annoyance since rebooting that machine was no problem. Rebooting this machine is a pain since it has some things I'd rather not interupt running. Any solutions or workarounds? -- Crist J. Clark cjclark@alum.mit.edu To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-questions" in the body of the message