Old style fixed partitions in KS-- Anaconda bug??

Landreth, Kevin klandreth at theplanet.com
Wed Feb 6 19:58:27 UTC 2008


After sfdisk, do blockdev --rereadpt <dev> or partprobe <dev>  to force
the kernel to understand that the disk layout has changed.  Once for
each disk.

Let us know if that helps :)

--
Thanks,
Kevin Landreth, RHCE
Technology Architect 


-----Original Message-----
From: kickstart-list-bounces at redhat.com
[mailto:kickstart-list-bounces at redhat.com] On Behalf Of dwight at
supercomputer.org
Sent: Wednesday, February 06, 2008 11:15 AM
To: kickstart-list at redhat.com
Cc: Cris Rhea
Subject: Re: Old style fixed partitions in KS-- Anaconda bug??

On Tuesday 05 February 2008 04:02:52 am Cris Rhea wrote:

> I've tried with and without zeroing the first block (did this to 
> nuke some systems that came from Sun with ZFS/GPT).   No change...
>
> The sfdisk IS SUCCESSFUL (looking at the disk with the <CTL><ALT>
> <F2> shell).

One has to be careful. There's an in-core copy of the partition table
(used by the kernel) and an on-disk copy. The two are different, and 
can be out of sync.  Looking at the changes by hand can give you the 
in-core copy, when in fact it hasn't been written to disk.

This has been an annoying problem across all versions of UNIX and 
Linux ever since UNIX was first put on the PC back in the mid 1980's.

And this is, in fact, what anaconda/parted appear to be running into:

> 15:27:41 CRITICAL: parted exception: Error: Error informing the
> kernel about modifications to partition /dev/sda5 -- Device or
> resource busy. This means Linux won't know about any changes you
> made to /dev/sda5 until you reboot -- so you shouldn't mount it or
> use it in any way before rebooting.

It would seem that anaconda is somehow leaving open /dev/sda, and 
preventing the new table from being sync'd. But this only happens if 
you do modifications in the %pre section.

Clearly this is a failure on anaconda's part. The options aren't 
pleasant.

One quick workaround might be to kickstart twice. The first time 
through, do the partitioning as you have it, and then reboot. The 
second time would do the rest of your kickstart file. This isn't 
pleasant, but it might work.

Barring that, I think one would have to dig into anaconda, and 
figureout who is keeping that device open between the %pre section,
and when parted is run.

I hope that doesn't sound discouraging, because what you are doing is
pretty important. The lack of a reliable way to define partitions in 
the %pre section is IMHO the greatest weakness of Kickstart. 
Anaconda's preordained ability to overwrite what the user wants, 
with no alternative, based upon arbitrary and undocumented defaults, 
is very limiting in a production environment.

And your solution here is the best that I've seen. It should part 
of a FAQ somewhere.

   -dwight-

_______________________________________________
Kickstart-list mailing list
Kickstart-list at redhat.com
https://www.redhat.com/mailman/listinfo/kickstart-list




More information about the Kickstart-list mailing list