[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#94159: e2fsck: incorrectly parallelizes checks on the same spindle when using devfs



Package: e2fsprogs
Severity: minor

> On Mon, Apr 16, 2001 at 09:51:25PM +1000, Brian May wrote:
> > Hello,
> > 
> > I identified a problem with e2fsck: It wanted to check all five partitions
> > at the same time!
> > 
> > >From /etc/fstab:
> > 
> > /dev/discs/disc1/part5  /var/spool/squid ext2   defaults                0       2
> > /dev/discs/disc1/part7  /old/homes      ext2    defaults,usrquota       0       2
> > /dev/discs/disc1/part9  /old/home       ext2    defaults,usrquota       0       2
> > 
> > /dev/discs/disc1/part8  /nfsroot        ext2    defaults                0       2
> > /dev/discs/disc1/part10 /mirror         ext2    defaults                0       2
> > 
> > normally I wouldn't care, but considering this harddisk is showing
> > signs of dying, I don't think the extra thrashing this would have
> > caused would have done any good.

The parallelizing fsck frontend is supposed to only share the load between
spindles.  The logic in misc/fsck.c tries to do this by comparing the first
part of the device name:

static const char *base_devices[] = {
        "/dev/hda",
        "/dev/hdb",
        "/dev/hdc",
        "/dev/hdd",
        "/dev/hde",
        "/dev/hdf",
        "/dev/hdg",
        "/dev/hdh",
        "/dev/hd1a",
        "/dev/hd1b",
        "/dev/hd1c",
        "/dev/hd1d",
        "/dev/sda",
        "/dev/sdb",
        "/dev/sdc",
        "/dev/sdd",
        "/dev/sde",
        "/dev/sdf",
        "/dev/sdg",
        NULL
};

A better way might be to use the major/minor device numbers.  Just
/dev/dists/disc{0,1,...} is no good because many of us use the full device path
(e.g. /dev/scsi/host1/bus0/target0/lun0/part0).

-- 
 - mdz



Reply to: