summaryrefslogtreecommitdiffstats
path: root/fdisk/fdisk.c
diff options
context:
space:
mode:
Diffstat (limited to 'fdisk/fdisk.c')
-rw-r--r--fdisk/fdisk.c18
1 files changed, 12 insertions, 6 deletions
diff --git a/fdisk/fdisk.c b/fdisk/fdisk.c
index 2a6d419f3..f5c67904c 100644
--- a/fdisk/fdisk.c
+++ b/fdisk/fdisk.c
@@ -976,8 +976,6 @@ get_topology(int fd) {
#ifdef HAVE_LIBBLKID_INTERNAL
blkid_probe pr;
- if (user_set_sector_size)
- return;
pr = blkid_new_probe();
if (pr && blkid_probe_set_device(pr, fd, 0, 0) == 0) {
blkid_topology tp = blkid_probe_get_topology(pr);
@@ -1006,12 +1004,20 @@ get_topology(int fd) {
#endif
if (user_set_sector_size)
- ;
- else if (blkdev_get_sector_size(fd, &arg) == 0)
+ /* fdisk since 2.17 differentiate between logical and physical
+ * sectors size. For backward compatibility the
+ * fdisk -b <sectorsize>
+ * changes both, logical and physical sector size.
+ */
+ phy_sector_size = sector_size;
+
+ else if (blkdev_get_sector_size(fd, &arg) == 0) {
sector_size = arg;
- if (!phy_sector_size)
- phy_sector_size = sector_size;
+ if (!phy_sector_size)
+ phy_sector_size = sector_size;
+ }
+
if (!min_io_size)
min_io_size = phy_sector_size;
if (!io_size)