From 519561f73f7ba987affde8b174d2691bb098439d Mon Sep 17 00:00:00 2001 From: Neil Brown Date: Tue, 29 Apr 2008 17:13:53 +1000 Subject: [PATCH] Fix possible bug with bitmap space allocation with v1.0 metadata When adding a device to an array, make sure we don't reserve so much space for the bitmap that there isn't room for the data. --- .gitignore | 0 md.4 | 12 ++++++------ mdadm.conf.5 | 12 ++++++------ super1.c | 4 +++- 4 files changed, 15 insertions(+), 13 deletions(-) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..e69de29b diff --git a/md.4 b/md.4 index db39aba6..fb7267f2 100644 --- a/md.4 +++ b/md.4 @@ -1,9 +1,9 @@ -''' Copyright Neil Brown and others. -''' This program is free software; you can redistribute it and/or modify -''' it under the terms of the GNU General Public License as published by -''' the Free Software Foundation; either version 2 of the License, or -''' (at your option) any later version. -''' See file COPYING in distribution for details. +.\" Copyright Neil Brown and others. +.\" This program is free software; you can redistribute it and/or modify +.\" it under the terms of the GNU General Public License as published by +.\" the Free Software Foundation; either version 2 of the License, or +.\" (at your option) any later version. +.\" See file COPYING in distribution for details. .TH MD 4 .SH NAME md \- Multiple Device driver aka Linux Software RAID diff --git a/mdadm.conf.5 b/mdadm.conf.5 index 4807055b..aadfb23e 100644 --- a/mdadm.conf.5 +++ b/mdadm.conf.5 @@ -1,9 +1,9 @@ -''' Copyright Neil Brown and others. -''' This program is free software; you can redistribute it and/or modify -''' it under the terms of the GNU General Public License as published by -''' the Free Software Foundation; either version 2 of the License, or -''' (at your option) any later version. -''' See file COPYING in distribution for details. +.\" Copyright Neil Brown and others. +.\" This program is free software; you can redistribute it and/or modify +.\" it under the terms of the GNU General Public License as published by +.\" the Free Software Foundation; either version 2 of the License, or +.\" (at your option) any later version. +.\" See file COPYING in distribution for details. .TH MDADM.CONF 5 .SH NAME mdadm.conf \- configuration for management of Software RAID with mdadm diff --git a/super1.c b/super1.c index 887db10c..7ea6958a 100644 --- a/super1.c +++ b/super1.c @@ -905,7 +905,7 @@ static int write_init_super1(struct supertype *st, * for a bitmap. */ array_size = __le64_to_cpu(sb->size); - /* work out how much space we left of a bitmap */ + /* work out how much space we left for a bitmap */ bm_space = choose_bm_space(array_size); switch(st->minor_version) { @@ -915,6 +915,8 @@ static int write_init_super1(struct supertype *st, sb_offset &= ~(4*2-1); sb->super_offset = __cpu_to_le64(sb_offset); sb->data_offset = __cpu_to_le64(0); + if (sb_offset - bm_space < array_size) + bm_space = sb_offset - array_size; sb->data_size = __cpu_to_le64(sb_offset - bm_space); break; case 1: -- 2.39.5