Note: This is a public test instance of Red Hat Bugzilla. The data contained within is a snapshot of the live data so any changes you make will not be reflected in the production Bugzilla. Email is disabled so feel free to test any aspect of the site that you want. File any problems you find or give feedback at bugzilla.redhat.com.

Bug 1183234

Summary: sfdisk does not allow changing the partition type to unknown types
Product: [Fedora] Fedora Reporter: Richard W.M. Jones <rjones>
Component: util-linuxAssignee: Karel Zak <kzak>
Status: CLOSED RAWHIDE QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: rawhideCC: jonathan, kzak, mbooth, ptoscano, rbalakri, rjones
Target Milestone: ---   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2015-02-11 09:23:12 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On:    
Bug Blocks: 910269    

Description Richard W.M. Jones 2015-01-17 13:48:15 UTC
Description of problem:

sfdisk has changed its command line, so now running this test
(or using the guestfs_part_set_mbr_id API) fails with:

libguestfs: trace: part_set_mbr_id "/dev/sda" 1 127
05 seconds
guestfsd: main_loop: new request, len 0x3c
udevadm --debug settle
calling: settle
sfdisk --change-id /dev/sda 1 7f
sfdisk: change-id is deprecated in favour of ---part-type
sfdisk: --id s deprecated in favour of ---part-type
sfdisk: failed to parse dos partition type '7f'
[    2.592464]  sda: sda1
guestfsd: error: sfdisk --change-id: sfdisk: change-id is deprecated in favour of ---part-type
sfdisk: --id s deprecated in favour of ---part-type
sfdisk: failed to parse dos partition type '7f'
guestfsd: main_loop: proc 236 (part_set_mbr_id) took 0.01 seconds
libguestfs: trace: part_set_mbr_id = -1 (error)
libguestfs: error: part_set_mbr_id: sfdisk --change-id: sfdisk: change-id is deprecated in favour of ---part-type
sfdisk: --id s deprecated in favour of ---part-type
sfdisk: failed to parse dos partition type '7f'
FAIL: test_part_get_mbr_id_0

A simple one-line reproducer is:

$ guestfish -N fs part-set-mbr-id /dev/sda 1 127
libguestfs: error: part_set_mbr_id: sfdisk --change-id: sfdisk: change-id is deprecated in favour of ---part-type
sfdisk: --id s deprecated in favour of ---part-type
sfdisk: failed to parse dos partition type '7f'

Version-Release number of selected component (if applicable):

libguestfs-1.29.20

However the problematic package is sfdisk:
util-linux-2.26-0.2.fc22.x86_64

How reproducible:

100%

Steps to Reproduce:
1. guestfish -N fs part-set-mbr-id /dev/sda 1 127

Comment 1 Richard W.M. Jones 2015-01-17 13:49:36 UTC
I have skipped this test in Rawhide for now.

Comment 2 Pino Toscano 2015-01-28 08:33:06 UTC
Aside the deprecated command line option (which is easy to switch to the new option), the real problem here is that the new sfdisk in util-linux 2.26 reject unknown partition types, hence the "7f" triggers an error:

  151: libfdisk: PARTTYPE: [0x1f0b5d0]: returns parsed 'unknown' partition type
  sfdisk: failed to parse dos partition type '0x7f'

(when enabling debug, i.e. exporting SFDISK_DEBUG=all and LIBFDISK_DEBUG=all)

While this can make sense, because for older partition types there are really no unknown partition types, on the other hand it might be useful to force a partition type which libsfdisk does not known about (say a new gpt type).

Comment 3 Karel Zak 2015-01-28 09:01:49 UTC
(In reply to Pino Toscano from comment #2)
> Aside the deprecated command line option (which is easy to switch to the new
> option), the real problem here is that the new sfdisk in util-linux 2.26
> reject unknown partition types, hence the "7f" triggers an error:
> 
>   151: libfdisk: PARTTYPE: [0x1f0b5d0]: returns parsed 'unknown' partition
> type
>   sfdisk: failed to parse dos partition type '0x7f'

This is bug. Fixed by upstream commit aaa0ba88b4afd328e13e9dd79a0df99d7fb76fbd.

	# sfdisk --part-type /dev/sdb 1 0x7f

	The partition table has been altered.
	Calling ioctl() to re-read partition table.
	Syncing disks.


	# sfdisk --list /dev/sdb
	Disk /dev/sdb: 100 MiB, 104857600 bytes, 204800 sectors
	Units: sectors of 1 * 512 = 512 bytes
	Sector size (logical/physical): 512 bytes / 512 bytes
	I/O size (minimum/optimal): 512 bytes / 32768 bytes
	Disklabel type: dos
	Disk identifier: 0x941f0074

	Device     Boot Start    End Sectors Size Id Type
	/dev/sdb1        2048  22527   20480  10M 7f unknown
	/dev/sdb2       22528 204799  182272  89M  c W95 FAT32 (LBA)


Thanks! (Fedora package will be updated ASAP (after -rc2 release).)