packages: mdadm/mdadm.spec, mdadm/mdadm-bitmap.patch (NEW)=?UTF-8?Q?=20?=- rel 3; fix but...

arekm arekm at pld-linux.org
Thu Mar 8 22:15:08 CET 2012


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 <neilb at suse.de>
+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 <alex.bolshoy at gmail.com>
+    Signed-off-by: NeilBrown <neilb at suse.de>
+
+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



More information about the pld-cvs-commit mailing list