From mboxrd@z Thu Jan 1 00:00:00 1970 From: Karel Zak Subject: Re: [PATCH 1/2] partitions: use sector size for EFI GPT Date: Mon, 9 Nov 2009 14:08:27 +0100 Message-ID: <20091109130827.GO5610@nb.net.home> References: <1256294176-32113-1-git-send-email-kzak@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org To: Andries Brouwer , Andrew Morton , Jens Axboe Return-path: Content-Disposition: inline In-Reply-To: <1256294176-32113-1-git-send-email-kzak@redhat.com> Sender: linux-kernel-owner@vger.kernel.org List-Id: linux-fsdevel.vger.kernel.org On Fri, Oct 23, 2009 at 12:36:15PM +0200, Karel Zak wrote: > Currently, kernel uses strictly 512-byte sectors for EFI GPT parsing. > That's wrong. Ping? Does anyone care about new disks with non-512byte sectors? (or fs/partitions is unmaintained area? ;-) Note that since 2.6.31 kernel properly reports topology information to userspace and many userspace tools (fdisk, parted, anaconda, libblkid, mkfs.xfs, mkfs.ext, ...) are able to follow such information. The current kernel EFI GPT code in not compatible with the latest userspace and GPT partitions on disks with >512byte sectors will be *invisible* for Linux kernel. Karel > 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 -- Karel Zak