Author: arekm Date: Thu Mar 8 21:15:08 2012 GMT Module: packages Tag: HEAD ---- Log message: - rel 3; fix but when activating bitmap on array fails sometimes
---- Files affected: packages/mdadm: mdadm.spec (1.115 -> 1.116) , mdadm-bitmap.patch (NONE -> 1.1) (NEW) ---- Diffs: ================================================================ Index: packages/mdadm/mdadm.spec diff -u packages/mdadm/mdadm.spec:1.115 packages/mdadm/mdadm.spec:1.116 --- packages/mdadm/mdadm.spec:1.115 Thu Feb 16 06:40:45 2012 +++ packages/mdadm/mdadm.spec Thu Mar 8 22:15:03 2012 @@ -9,7 +9,7 @@ Summary(pl.UTF-8): Narzędzie do tworzenia i obsługi programowych macierzy RAID Name: mdadm Version: 3.2.3 -Release: 2 +Release: 3 License: GPL v2+ Group: Base Source0: http://www.kernel.org/pub/linux/utils/raid/mdadm/%{name}-%{version}.tar.bz2 @@ -21,6 +21,7 @@ Source5: %{name}-initramfs-hook Source6: %{name}-initramfs-local-top Patch0: %{name}-segv.patch +Patch1: %{name}-bitmap.patch URL: http://www.kernel.org/pub/linux/utils/raid/mdadm/ BuildRequires: groff BuildRequires: rpmbuild(macros) >= 1.213 @@ -80,6 +81,7 @@ %prep %setup -q %patch0 -p1 +%patch1 -p1 %build %if %{with initrd} @@ -195,6 +197,9 @@ All persons listed below can be reached at <cvs_login>@pld-linux.org $Log$ +Revision 1.116 2012/03/08 21:15:03 arekm +- rel 3; fix but when activating bitmap on array fails sometimes + Revision 1.115 2012/02/16 05:40:45 arekm - rel 2; fix segv at assemble (sometimes only) ================================================================ Index: packages/mdadm/mdadm-bitmap.patch diff -u /dev/null packages/mdadm/mdadm-bitmap.patch:1.1 --- /dev/null Thu Mar 8 22:15:09 2012 +++ packages/mdadm/mdadm-bitmap.patch Thu Mar 8 22:15:03 2012 @@ -0,0 +1,83 @@ +commit 6ef89052d85b8137b8a7100f761d896ae6f61001 +Author: NeilBrown <[email protected]> +Date: Tue Feb 7 11:55:18 2012 +1100 + + super1: make aread/awrite always use an aligned buffer. + + A recently change to write_bitmap1 meant awrite would sometimes + write from a non-aligned buffer which of course break. + + So change awrite (and aread) to always use their own aligned + buffer to ensure safety. + + Reported-by: Alexander Lyakas <[email protected]> + Signed-off-by: NeilBrown <[email protected]> + +diff --git a/super1.c b/super1.c +index d23d6e8..cfa237a 100644 +--- a/super1.c ++++ b/super1.c +@@ -143,17 +143,19 @@ static int aread(int fd, void *buf, int len) + * the full sector and copy relevant bits into + * the buffer + */ +- int bsize; ++ int bsize, iosize; + char *b; + int n; +- if (ioctl(fd, BLKSSZGET, &bsize) != 0 || +- bsize <= len) +- return read(fd, buf, len); +- if (bsize > 4096) ++ if (ioctl(fd, BLKSSZGET, &bsize) != 0) ++ bsize = 512; ++ ++ if (bsize > 4096 || len > 4096) + return -1; + b = (char*)(((long)(abuf+4096))&~4095UL); + +- n = read(fd, b, bsize); ++ for (iosize = 0; iosize < len; iosize += bsize) ++ ; ++ n = read(fd, b, iosize); + if (n <= 0) + return n; + lseek(fd, len - n, 1); +@@ -171,22 +173,27 @@ static int awrite(int fd, void *buf, int len) + * than the write. + * The address must be sector-aligned. + */ +- int bsize; ++ int bsize, iosize; + char *b; + int n; +- if (ioctl(fd, BLKSSZGET, &bsize) != 0 || +- bsize <= len) +- return write(fd, buf, len); +- if (bsize > 4096) ++ if (ioctl(fd, BLKSSZGET, &bsize) != 0) ++ bsize = 512; ++ if (bsize > 4096 || len > 4096) + return -1; + b = (char*)(((long)(abuf+4096))&~4095UL); + +- n = read(fd, b, bsize); +- if (n <= 0) +- return n; +- lseek(fd, -n, 1); ++ for (iosize = 0; iosize < len ; iosize += bsize) ++ ; ++ ++ if (len != iosize) { ++ n = read(fd, b, iosize); ++ if (n <= 0) ++ return n; ++ lseek(fd, -n, 1); ++ } ++ + memcpy(b, buf, len); +- n = write(fd, b, bsize); ++ n = write(fd, b, iosize); + if (n <= 0) + return n; + lseek(fd, len - n, 1); ================================================================ ---- CVS-web: http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/packages/mdadm/mdadm.spec?r1=1.115&r2=1.116&f=u _______________________________________________ pld-cvs-commit mailing list [email protected] http://lists.pld-linux.org/mailman/listinfo/pld-cvs-commit
