On Wed, 2009-08-26 at 11:45 +0200, Hans de Goede wrote: > In storage.doIt() we set the bootable flag for the /boot or / (or > special platform boot) partition. And then we call bootdev.format.commit(), > however this will lead to parted trying to tell the kernel to rescan the > partition table which will usually fail, as usually we have some VolGroup > active at this point. > > All we really need todo is make sure the bootable flag gets written to the > disk, so this patch adds a commitToDisk() method to formats.disklabel and uses > that. Should we pack this into a retry loop like we do for disk.commit? Dave > > We were not bitten by this before because uptil now parted was silently > ignoring ebusy errors for us (BAD parted, BAD!). > --- > storage/__init__.py | 2 +- > storage/formats/disklabel.py | 7 +++++++ > 2 files changed, 8 insertions(+), 1 deletions(-) > > diff --git a/storage/__init__.py b/storage/__init__.py > index de34051..d05a8a5 100644 > --- a/storage/__init__.py > +++ b/storage/__init__.py > @@ -238,7 +238,7 @@ class Storage(object): > else: > if hasattr(boot, "bootable"): > boot.bootable = True > - boot.disk.format.commit() > + boot.disk.format.commitToDisk() > > @property > def nextID(self): > diff --git a/storage/formats/disklabel.py b/storage/formats/disklabel.py > index b3b81ed..08e2461 100644 > --- a/storage/formats/disklabel.py > +++ b/storage/formats/disklabel.py > @@ -208,6 +208,13 @@ class DiskLabel(DeviceFormat): > if keepTrying: > raise DeviceFormatError("cannot commit to disk after %d attempts" % (maxTries,), ) > > + def commitToDisk(self): > + """ Commit the current partition table to disk. """ > + try: > + self.partedDisk.commitToDevice() > + except parted.DiskException as msg: > + raise DeviceFormatError(msg) > + > def addPartition(self, *args, **kwargs): > partition = kwargs.get("partition", None) > if not partition: _______________________________________________ Anaconda-devel-list mailing list Anaconda-devel-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/anaconda-devel-list