mke2fs: don't set stripe/stride to 1 block

Block devices may set minimum or optimal IO hints equal to
blocksize; in this case there is really nothing for ext4
to do with this information (i.e. search for a block-aligned
allocation?) so don't set fs geometry with single-block
values.

Zeev also reported that with a block-sized stripe, the
ext4 allocator spends time spinning in ext4_mb_scan_aligned(),
oddly enough.

Reported-by: Zeev Tarantov <zeev.tarantov@gmail.com>
Signed-off-by: Eric Sandeen <sandeen@redhat.com>
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
bitmap-optimize
Eric Sandeen 2011-04-04 15:11:52 -04:00 committed by Theodore Ts'o
parent 1760d167b2
commit d568782ade
1 changed files with 5 additions and 2 deletions

View File

@ -1184,8 +1184,11 @@ static int get_device_geometry(const char *file,
if ((opt_io == 0) && (psector_size > blocksize))
opt_io = psector_size;
fs_param->s_raid_stride = min_io / blocksize;
fs_param->s_raid_stripe_width = opt_io / blocksize;
/* setting stripe/stride to blocksize is pointless */
if (min_io > blocksize)
fs_param->s_raid_stride = min_io / blocksize;
if (opt_io > blocksize)
fs_param->s_raid_stripe_width = opt_io / blocksize;
rc = blkid_topology_get_alignment_offset(tp);
out: