Bug 626374

Summary: fdisk incorrectly checks alignment for non-512-byte *logical* sectors.
Product: Red Hat Enterprise Linux 6 Reporter: Karel Zak <kzak>
Component: util-linux-ngAssignee: Karel Zak <kzak>
Status: CLOSED ERRATA QA Contact: qe-baseos-daemons
Severity: medium Docs Contact:
Priority: low    
Version: 6.1CC: azelinka, msnitzer, rvokal, yanwang
Target Milestone: rc   
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: util-linux-ng-2.17.2-9.el6 Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2011-05-19 14:06:20 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Karel Zak 2010-08-23 11:58:20 UTC
Copy & past from upstream:

     # modprobe scsi_debug dev_size_mb=1024 sector_size=4096
    
     # fdisk /dev/sdb
    
      Command (m for help): n
      Command action
        e   extended
        p   primary partition (1-4)
      p
      Partition number (1-4, default 1):
      Using default value 1
      First sector (256-262143, default 256): 257
      Last sector, +sectors or +size{K,M,G} (257-262143, default 262143): +100M
    
      Command (m for help): p
    
      Disk /dev/sdb: 1073 MB, 1073741824 bytes
      32 heads, 32 sectors/track, 256 cylinders, total 262144 sectors
      Units = sectors of 1 * 4096 = 4096 bytes
      Sector size (logical/physical): 4096 bytes / 4096 bytes
      I/O size (minimum/optimal): 4096 bytes / 262144 bytes
      Disk identifier: 0x16db2bb0
    
        Device Boot      Start         End      Blocks   Id  System
      /dev/sdb1            257       25855      102396   83  Linux
      Partition 1 does not start on physical sector boundary.
      ^^^^^^^^
    
     The warning is nonsense. The logical and physical sector size is the
     same. It means that every LBA is always aligned to physical sector
     boundary.
    
     Note that this bug does not mean that fdisk produces unaligned
     partitions. The problem is that fdisk forces to use bigger gaps
     between aligned LBAs, for example:
    
       correctly aligned LBA are: 256, 257, 258, ...  [N+1]
       fdisk assumes:             256, 264, 272, ...  [N+(sector_size/512)]
    

Bug fix is pretty simple:

-	unsigned long long offset = (lba << 9) & (granularity - 1);
+	unsigned long long offset = (lba * sector_size) & (granularity - 1);

Comment 4 errata-xmlrpc 2011-05-19 14:06:20 UTC
An advisory has been issued which should help the problem
described in this bug report. This report is therefore being
closed with a resolution of ERRATA. For more information
on therefore solution and/or where to find the updated files,
please follow the link below. You may reopen this bug report
if the solution does not work for you.

http://rhn.redhat.com/errata/RHBA-2011-0699.html