• Karel Zak's avatar
    partitions: use sector size for EFI GPT · 7d13af32
    Karel Zak authored
    Currently, kernel uses strictly 512-byte sectors for EFI GPT parsing.
    That's wrong.
    
    UEFI standard (version 2.3, May 2009, 5.3.1 GUID Format overview, page
    95) defines that LBA is always based on the logical block size. It
    means bdev_logical_block_size() (aka BLKSSZGET) for Linux.
    
    This patch removes static sector size from EFI GPT parser.
    
    The problem is reproducible with the latest GNU Parted:
    
     # modprobe scsi_debug dev_size_mb=50 sector_size=4096
    
      # ./parted /dev/sdb print
      Model: Linux scsi_debug (scsi)
      Disk /dev/sdb: 52.4MB
      Sector size (logical/physical): 4096B/4096B
      Partition Table: gpt
    
      Number  Start   End     Size    File system  Name     Flags
       1      24.6kB  3002kB  2978kB               primary
       2      3002kB  6001kB  2998kB               primary
       3      6001kB  9003kB  3002kB               primary
    
      # blockdev --rereadpt /dev/sdb
      # dmesg | tail -1
       sdb: unknown partition table      <---- !!!
    
    with this patch:
    
      # blockdev --rereadpt /dev/sdb
      # dmesg | tail -1
       sdb: sdb1 sdb2 sdb3
    Signed-off-by: default avatarKarel Zak <kzak@redhat.com>
    Signed-off-by: default avatarJens Axboe <jens.axboe@oracle.com>
    7d13af32
efi.c 19.4 KB