Bug 693764

Summary: FormatDestroyError: error wiping old signatures from /dev/dasdb1: 1
Product: [Fedora] Fedora Reporter: Jan Stodola <jstodola>
Component: partedAssignee: Brian Lane <bcl>
Status: CLOSED ERRATA QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: medium Docs Contact:
Priority: medium    
Version: rawhideCC: anaconda-maint-list, bcl, brueckner, dan, jonathan, kzak, rmancy, vanmeeuwen+fedora
Target Milestone: ---   
Target Release: ---   
Hardware: s390x   
OS: Linux   
Whiteboard: anaconda_trace_hash:dc9be83dfe4c55f868b1730e9db4575fa98b60f55755f46ebbcda94665bb52ac
Fixed In Version: parted-2.3-10.fc15 Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2011-07-25 06:17:48 EDT Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---
Bug Depends On:    
Bug Blocks: 467765    
Attachments:
Description Flags
Attached traceback automatically from anaconda.
none
strace wipefs /dev/dasdb1
none
Attached traceback automatically from anaconda. none

Description Jan Stodola 2011-04-05 10:27:23 EDT
The following was filed automatically by anaconda:
anaconda 15.25 exception report
Traceback (most recent call first):
  File "/usr/lib64/python2.7/site-packages/pyanaconda/storage/formats/__init__.py", line 288, in destroy
    raise FormatDestroyError(msg)
  File "/usr/lib64/python2.7/site-packages/pyanaconda/storage/devices.py", line 1428, in _postCreate
    DeviceFormat(device=self.path, exists=True).destroy()
  File "/usr/lib64/python2.7/site-packages/pyanaconda/storage/devices.py", line 750, in create
    self._postCreate()
  File "/usr/lib64/python2.7/site-packages/pyanaconda/storage/deviceaction.py", line 240, in execute
    self.device.create(intf=intf)
  File "/usr/lib64/python2.7/site-packages/pyanaconda/storage/devicetree.py", line 313, in processActions
    action.execute(intf=self.intf)
  File "/usr/lib64/python2.7/site-packages/pyanaconda/storage/__init__.py", line 356, in doIt
    self.devicetree.processActions()
  File "/usr/lib64/python2.7/site-packages/pyanaconda/packages.py", line 116, in turnOnFilesystems
    anaconda.storage.doIt()
  File "/usr/lib64/python2.7/site-packages/pyanaconda/dispatch.py", line 211, in moveStep
    rc = stepFunc(self.anaconda)
  File "/usr/lib64/python2.7/site-packages/pyanaconda/dispatch.py", line 130, in gotoNext
    self.moveStep()
  File "/usr/lib64/python2.7/site-packages/pyanaconda/gui.py", line 1257, in nextClicked
    self.anaconda.dispatch.gotoNext()
FormatDestroyError: error wiping old signatures from /dev/dasdb1: 1
Comment 1 Jan Stodola 2011-04-05 10:27:27 EDT
Created attachment 489991 [details]
Attached traceback automatically from anaconda.
Comment 2 Jan Stodola 2011-04-05 10:31:59 EDT
Steps to reproduce:
1. run cpfmtxa in CMS to format an DASD disk
2. start the installation in vnc mode
3. when asked, format the DASD disk to use with linux
4. create custom partitioning:
/boot   500 MB
swap   1000 MB
/      rest of the drive
5. select Next
6. traceback
Comment 3 Chris Lumens 2011-04-07 17:06:12 EDT
10:30:21,148 INFO program: Running... wipefs -a /dev/dasdb1
10:30:21,153 ERR program: wipefs: error: /dev/dasdb1: probing initialization failed

I wonder what causes that.
Comment 4 Karel Zak 2011-04-08 06:32:09 EDT
It would be nice to call wipefs(8) with enabled debugging

  BLKID_DEBUG=0xffff wipefs /dev/dasdb1

note that the command without any option (e.g. -a) is not destructive ;-) The other way is call it with strace.
Comment 5 Jan Stodola 2011-04-08 13:13:24 EDT
Created attachment 490845 [details]
strace wipefs /dev/dasdb1

-bash-4.2# BLKID_DEBUG=0xffff wipefs /dev/dasdb1
wipefs: error: /dev/dasdb1: probing initialization failed

"strace wipefs /dev/dasdb1" is in the attachment

One thing is not clear to me: why is anaconda trying to wipe old signatures from /dev/dasdb1? The drive /dev/dasdb has no partitions, it was formatted before the installation using the "cpfmtxa" command in CMS and later, anaconda formatted it using dasdfmt...

-bash-4.2# ls /dev | grep dasd
dasd_eer
dasdb
Comment 6 Karel Zak 2011-04-11 09:43:37 EDT
(In reply to comment #5)
> Created attachment 490845 [details]
> strace wipefs /dev/dasdb1

open("/dev/dasdb1", O_RDONLY)   = -1 ENOENT (No such file or directory)

 ;-) 

> One thing is not clear to me: why is anaconda trying to wipe old signatures
> from /dev/dasdb1? The drive /dev/dasdb has no partitions, it was formatted
> before the installation using the "cpfmtxa" command in CMS and later, anaconda
> formatted it using dasdfmt...

Maybe there is the partition, but anaconda forgot to inform kernel about the change in partition table (re-read PT ioctl, e.g. partprobe command).

Reassigning back to the snake...
Comment 7 David Lehman 2011-04-18 10:04:44 EDT
We are wiping any old metadata from a newly created partition. The problem is that we have told parted to commit the new partition table to the disk and OS, but still the device node does not appear. This is specific to dasd devices. I have seen it several times.
Comment 8 Dan Horák 2011-04-20 04:25:00 EDT
Adding Hendrick to CC, maybe the kernel forgets to emit some events or ...
Comment 9 Hendrik Brueckner 2011-05-17 06:16:38 EDT
(In reply to comment #8)
> Adding Hendrick to CC, maybe the kernel forgets to emit some events or ...

One point could be that parted/anaconda miss the re-read partition table ioctl. On other side it might help to run udevadm settle between parted and the wipefs call.
Comment 10 Dan Horák 2011-07-22 06:30:29 EDT
It really looks like parted doesn't issue the re-read partition ioctl or the dasds doesn't understand the partition refresh method parted is using. After writing new partition table with parted nothing happens, with fdasd the new partition is available after writing the partition table.
Comment 11 Dan Horák 2011-07-22 06:37:21 EDT
from parted's libparted/disk.c

...
/**
 * Tell the operating system kernel about the partition table layout
 * of \p disk.
 *
 * This is rather loosely defined: for example, on old versions of Linux,
 * it simply calls the BLKRRPART ioctl, which tells the kernel to
 * reread the partition table. On newer versions (2.4.x), it will
 * use the new blkpg interface to tell Linux where each partition
 * starts/ends, etc. In this case, Linux does not need to have support for
 * a specific type of partition table.
 * 
 * \return 0 on failure, 1 otherwise.
 */
int
ped_disk_commit_to_os (PedDisk* disk)
Comment 12 Dan Horák 2011-07-25 06:17:48 EDT
same bug as #651478, the patch used in F-14 was missing in the F-15 package
Comment 13 Brian Lane 2011-07-25 14:11:21 EDT
Thanks. This patch made it into upstream so rawhide has it and should work just fine.
Comment 14 Fedora Update System 2011-07-25 15:01:05 EDT
parted-2.3-10.fc15 has been submitted as an update for Fedora 15.
https://admin.fedoraproject.org/updates/parted-2.3-10.fc15
Comment 15 Fedora Update System 2011-08-23 00:29:44 EDT
parted-2.3-10.fc15 has been pushed to the Fedora 15 stable repository.  If problems still persist, please make note of it in this bug report.
Comment 16 Raymond Mancy 2011-10-31 02:17:01 EDT
Created attachment 530899 [details]
Attached traceback automatically from anaconda.