Whamcloud - gitweb
mke2fs: don't set stripe/stride to 1 block
authorEric Sandeen <sandeen@redhat.com>
Mon, 4 Apr 2011 19:11:52 +0000 (15:11 -0400)
committerTheodore Ts'o <tytso@mit.edu>
Wed, 18 May 2011 17:19:57 +0000 (13:19 -0400)
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>
misc/mke2fs.c

index eace0d3..9f28901 100644 (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: