gcc-2.95.3 is failing with CONFIG_LBD=1. Reorganising the code a bit made it go away. md/linear.c | 13 +++++++++++-- 1 files changed, 11 insertions(+), 2 deletions(-) diff -puN drivers/md/linear.c~linear-gcc-workaround drivers/md/linear.c --- 25/drivers/md/linear.c~linear-gcc-workaround 2003-02-14 02:18:58.000000000 -0800 +++ 25-akpm/drivers/md/linear.c 2003-02-14 02:18:58.000000000 -0800 @@ -110,9 +110,18 @@ static int linear_run (mddev_t *mddev) goto out; } + /* + * This code was restructured to work around a gcc-2.95.3 internal + * compiler error. Alter it with care. + */ { - sector_t sz = md_size[mdidx(mddev)]; - unsigned round = sector_div(sz, conf->smallest->size); + sector_t sz; + unsigned round; + unsigned long base; + + sz = md_size[mdidx(mddev)]; + base = conf->smallest->size; + round = sector_div(sz, base); nb_zone = conf->nr_zones = sz + (round ? 1 : 0); } _