The default response is 'p' until three primary partitions are created,
then 'e'.
The original idea is from Karel Zak.
Signed-off-by: Francesco Cosoleto <cosoleto@gmail.com>
Mainly this appends a colon for the prompt, reverses order of the list,
reports the number of primary partitions used and unused.
Old version:
Command action
e extended
p primary partition (1-4)
p
New version:
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select: p
Old version:
Command action
l logical (5 or over)
p primary partition (1-4)
l
New version:
Partition type:
p primary (0 primary, 1 extended, 3 free)
l logical (numbered from 5)
Select: l
Signed-off-by: Francesco Cosoleto <cosoleto@gmail.com>
after
Do you really want to quit? n
the read_chars() has to re-print the original prompt and ask again
for new input. For example:
Partition number (1-4, default 3): <-- CTRL-D
Do you really want to quit? n
Partition number (1-4, default 3): 3 <-- ask again
First sector (411648-1023999, default 411648):
Signed-off-by: Karel Zak <kzak@redhat.com>
Simple replacement code with hardcoded y/n responses to allow
compilation on systems without rpmatch() such as Cygwin.
Signed-off-by: Francesco Cosoleto <cosoleto@gmail.com>
Signed-off-by: Karel Zak <kzak@redhat.com>
Don't use open() in get_boot() if it's called with an argument try_only,
because the file has already been opened by the caller.
Signed-off-by: Markus Rinne <markus.ka.rinne@gmail.com>
# 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)]
Reported-by: JOB NELSON <job_nelson@hotmail.com>
Signed-off-by: Karel Zak <kzak@redhat.com>
All fdisk code uses sector_size variable, so there should not be an
exception where we use 512-byte sectors.
Signed-off-by: Karel Zak <kzak@redhat.com>
The DOS mode and cylinders as display units are disabled by default
now. For users who need old DOS behavior is it necessary to extend
-c (compatibility) and -u (units) command line options. The change is
backwardly compatible (so people who already uses -u and -c are not
affected with this change). New form:
-c[=<mode>] where <mode> is 'dos' or 'nondos' (default)
-u[=<units>] where <units> is 'cylinders' or 'sectors' (default)
For example old deprecated DOS behavior could be enabled by:
fdisk -u=cylinders -c=dos /dev/sda
Signed-off-by: Karel Zak <kzak@redhat.com>
Translatable messages should not be split into parts that are
conditionally concatenated. Preferably they should each form
a complete message.
Signed-off-by: Benno Schulenberg <bensberg@justemail.net>
Signed-off-by: Karel Zak <kzak@redhat.com>
The 'b' command ("move beginning of data in a partition")
implementation is too restricted. For example:
Device Boot Start End Blocks Id System
/dev/sdb1 2048 22527 10240 83 Linux
....
Partition number (1-4): 1
New beginning of data (2048-22527, default 2048):
^^^^^^^^^^
the range is defined by the current partition size. New version:
Partition number (1-4): 1
New beginning of data (1-22527, default 2048):
^^^^^^^
allows to move the begin to arbitrary place if the place is not
allocated by any other partition. This is useful for people who don't
want to use the default partitioning (1MiB offset, 1MiB grain).
The 'b' command is expert command and does not force users to use an
aligned LBA (fdisk(8) still prints warning (in 'p' command) if any
partition is not aligned to the physical sector boundary).
Signed-off-by: Karel Zak <kzak@redhat.com>
old version:
Partition number (1-4):
new version:
Partition number (1-4, default 1):
where the default value is the first non-used primary partition.
Signed-off-by: Karel Zak <kzak@redhat.com>
The old fdisk (<2.17) does not differentiate between logical and
physical sector size, it uses the <sectorsize> for everything.
Now, we have logical and physical sectors size, but the -b option
changes the logical size only. The second bug is that "fdisk -b <sz>"
does not read topology information (it means that all I/O limits and
physical sector size are 512 (default).
The backwardly compatible bug fix is to override both sizes, logical
and physical if "-b" is used.
In future we can add a special option for physical size only.
Signed-off-by: Karel Zak <kzak@redhat.com>
* fdisk/Makefile.am: Depend on the mbsalign module.
* fdisk/fdisk.c: Align using mbsalign rather than printf.
[kzak@redhat.com: - use size_t for width to fix gcc warning]
Reported-by: Makoto Kato <m_kato@ga2.so-net.ne.jp>
Signed-off-by: Pádraig Brady <P@draigBrady.com>
Signed-off-by: Karel Zak <kzak@redhat.com>
It would be nice to minimize dependence between the disk layout and
disk topology. We have to follow disk topology for alignment_offset
and huge (> 1MiB) I/O sizes only. For all others disks we can use 1MiB
grain and 1MiB offset.
Reported-by: "H. Peter Anvin" <hpa@zytor.com>
Signed-off-by: Karel Zak <kzak@redhat.com>
* don't print:
The number of cylinders for this disk is set to 12161.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
(e.g., DOS FDISK, OS/2 FDISK)
we really don't care about MS-DOS or extremely old LILO.
* inform users that DOS-compatible mode is bad and deprecated thing
(It's difficult to use 2048 sectors grain or 4KiB sectors or
alignment_offset in DOS mode where all is based on cylinders...)
* don't check for cylinders boundary in non-DOS mode
* inform about sector and I/O sizes
Signed-off-by: Karel Zak <kzak@redhat.com>
The previous release 2.17 introduces aligned defaults for the first
and last sectors on the partition. Unfortunately, there is endless
loop when the code looks for first unused aligned sector.
Signed-off-by: Karel Zak <kzak@redhat.com>
* add heuristic to detect that the device does not provide
topology information. We can use topology if:
- alignment_offset is not 0
- or optimal_io_size is not 0
- or minimal_io_size is not power of 2
* default to 1MiB offset for the start of the first partition
if topology is unknown. This (2048 512-byte sectors)
is Windows Vista default.
* use optimal_io_size, minimal_io_size or 1MiB as a grain for
partitions alignment
Note that this all is used when DOS-compatible mode is disabled.
Signed-off-by: Karel Zak <kzak@redhat.com>
The alignment_offset is compensation for DOS compatible partitioning.
It usually matches with disk geometry (e.g. 63 sectors), but the
offset is also exported from phy.disks to RAIDs there the geometry
don't match with the offset. So.. don't print unnecessary warning.
Signed-off-by: Karel Zak <kzak@redhat.com>
* rename the minimum_io_size variable to io_size
* use blkid_topology_get_optimal_io_size() for io_size initialization
* use blkid_topology_get_minimum_io_size() as a fallback solution for
io_size initialization
Signed-off-by: Karel Zak <kzak@redhat.com>
Typical "new partition" dialog looks like:
Partition number (1-4): 1
First sector (4-818687, default 4):
^^^^^^^^^
The range (e.g. 4-818687) depends on fdisk mode (DOS/non-DOS), but the
default value should be always aligned.
For example RAID5 device in the DOS mode:
Disk /dev/md0: 419 MB, 419168256 bytes
2 heads, 4 sectors/track, 102336 cylinders, total 818688 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 65536 bytes
Disk identifier: 0x081479c3
....
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First sector (4-818687, default 128): <---- !!!
Using default value 128
Last sector, +sectors or +size{K,M,G} (128-818687, default 818687): +10M
Command (m for help): p
....
Device Boot Start End Blocks Id System
/dev/md0p1 128 20607 10240 83 Linux
For non-DOS mode the range will be:
First sector (128-818687, default 128):
Signed-off-by: Karel Zak <kzak@redhat.com>
It's better to have disks without gaps between partitions, so it's
better to align ends of partitions.
Note, we don't care about end of partitions when the last sector has
been explicitly requested by user.
Signed-off-by: Karel Zak <kzak@redhat.com>
Disk /dev/md0: 419 MB, 419168256 bytes
2 heads, 4 sectors/track, 102336 cylinders, total 818688 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 65536 bytes
Disk identifier: 0x081479c3
Device Boot Start End Blocks Id System
/dev/md0p1 200 818687 409244 83 Linux
Partition 1 does not start on physical block boundary.
Signed-off-by: Karel Zak <kzak@redhat.com>
* inform user that phy.sector > log.sector
* warn user when alignment_offset is not provided does, DOS-compatible
mode is enabled and the default geo.sectors are not aligned
* suggest to change display units to sectors (oh yes, fdisk
default are cylinders...)
Signed-off-by: Karel Zak <kzak@redhat.com>