[arch-commits] Commit in dmraid/trunk (6 files)

Tobias Powalowski tpowa at archlinux.org
Fri Jun 19 20:48:32 UTC 2009


    Date: Friday, June 19, 2009 @ 16:48:32
  Author: tpowa
Revision: 43102

upgpkg: dmraid 1.0.0.rc15-6

Added:
  dmraid/trunk/dmraid-1.0.0.rc15-isw-raid10.patch
  dmraid/trunk/dmraid-1.0.0.rc15-isw-serial.patch
  dmraid/trunk/dmraid-1.0.0.rc15-rm_partitions.patch
  dmraid/trunk/dmraid-1.0.0.rc15-whitespace.patch
Modified:
  dmraid/trunk/PKGBUILD
  dmraid/trunk/dmraid.install

---------------------------------------+
 PKGBUILD                              |   27 ++-
 dmraid-1.0.0.rc15-isw-raid10.patch    |   12 +
 dmraid-1.0.0.rc15-isw-serial.patch    |   88 ++++++++++++
 dmraid-1.0.0.rc15-rm_partitions.patch |  222 ++++++++++++++++++++++++++++++++
 dmraid-1.0.0.rc15-whitespace.patch    |   16 ++
 dmraid.install                        |   24 +--
 6 files changed, 370 insertions(+), 19 deletions(-)

Modified: PKGBUILD
===================================================================
--- PKGBUILD	2009-06-19 20:48:03 UTC (rev 43101)
+++ PKGBUILD	2009-06-19 20:48:32 UTC (rev 43102)
@@ -3,24 +3,37 @@
 #Contributor: Urs Wolfer <uwolfer @ fwo.ch>
 
 pkgname=dmraid
-pkgver=1.0.0.rc14
-pkgrel=4
+pkgver=1.0.0.rc15
+pkgrel=6
 pkgdesc="Device mapper RAID interface"
 url="http://people.redhat.com/~heinzm/sw/dmraid/"
 depends=(device-mapper)
 arch=('i686' 'x86_64')
 license=('GPL')
-source=(http://people.redhat.com/~heinzm/sw/dmraid/src/old/$pkgname-$pkgver.tar.bz2
+source=(http://people.redhat.com/~heinzm/sw/dmraid/src/$pkgname-$pkgver.tar.bz2
+        dmraid-1.0.0.rc15-isw-raid10.patch
+        dmraid-1.0.0.rc15-isw-serial.patch
+        dmraid-1.0.0.rc15-rm_partitions.patch
+        dmraid-1.0.0.rc15-whitespace.patch
         dmraid_install
         dmraid_hook)
 options=(force)
 install=dmraid.install
-md5sums=('a0e7d0bb5394e15c878ac86afd72c08e'
+md5sums=('2602887205a35f89b59eeba3a868150f'
+         '5a422c82e63321e65fbccb41dda70ea2'
+         '499864f61c36874c9cef69600da31b59'
+         '3d76f99972123b6efd7796bf51d543fa'
+         '0a3ec92f071a25a01753c6c34b4cb0df'
          'db9a72cbf07560059d407c874f646240'
          '2b2719d5bf463f411701241bba3d8120')
 
 build() {
   cd $srcdir/$pkgname/$pkgver
+  # add fedora patches
+  patch -Np1 -i ../../dmraid-1.0.0.rc15-isw-raid10.patch || return 1
+  patch -Np1 -i ../../dmraid-1.0.0.rc15-isw-serial.patch || return 1
+  patch -Np1 -i ../../dmraid-1.0.0.rc15-rm_partitions.patch || return 1
+  patch -Np1 -i ../../dmraid-1.0.0.rc15-whitespace.patch || return 1
   # create static bin
   ./configure --enable-static_link --prefix=/usr 
   make || return 1
@@ -38,7 +51,7 @@
   # fix .a file
   chmod 644 $pkgdir/usr/lib/libdmraid.a
   # fix manpage
-  mkdir -p $pkgdir/usr/share/man
-  mv $pkgdir/usr/man/man8 $pkgdir/usr/share/man/
-  rm -rf $pkgdir/usr/man
+  #mkdir -p $pkgdir/usr/share/man
+  #mv $pkgdir/usr/man/man8 $pkgdir/usr/share/man/
+  #rm -rf $pkgdir/usr/man
 }

Added: dmraid-1.0.0.rc15-isw-raid10.patch
===================================================================
--- dmraid-1.0.0.rc15-isw-raid10.patch	                        (rev 0)
+++ dmraid-1.0.0.rc15-isw-raid10.patch	2009-06-19 20:48:32 UTC (rev 43102)
@@ -0,0 +1,12 @@
+diff -up 1.0.0.rc15/lib/format/ataraid/isw.c~ 1.0.0.rc15/lib/format/ataraid/isw.c
+--- 1.0.0.rc15/lib/format/ataraid/isw.c~	2008-09-17 08:58:52.000000000 -0400
++++ 1.0.0.rc15/lib/format/ataraid/isw.c	2009-02-05 07:04:35.576126020 -0500
+@@ -155,7 +155,7 @@ name(struct lib_context *lc, struct raid
+ 
+ 			while (i--) {
+ 				if (disk == isw->disk + i) {
+-					id = i % 2;
++					id = i / 2;
+ 					goto ok;
+ 				}
+ 			}

Added: dmraid-1.0.0.rc15-isw-serial.patch
===================================================================
--- dmraid-1.0.0.rc15-isw-serial.patch	                        (rev 0)
+++ dmraid-1.0.0.rc15-isw-serial.patch	2009-06-19 20:48:32 UTC (rev 43102)
@@ -0,0 +1,88 @@
+diff -up 1.0.0.rc15/lib/format/ataraid/isw.c~ 1.0.0.rc15/lib/format/ataraid/isw.c
+--- 1.0.0.rc15/lib/format/ataraid/isw.c~	2009-04-10 14:12:14.000000000 +0200
++++ 1.0.0.rc15/lib/format/ataraid/isw.c	2009-04-10 14:38:56.000000000 +0200
+@@ -81,15 +81,43 @@ is_raid10(struct isw_dev *dev)
+ }
+ 
+ /* Find a disk table slot by serial number. */
++static const char *dev_info_serial_to_isw(const char *di_serial)
++{
++	static char isw_serial[1024];
++
++	int i, isw_serial_len = 0;
++
++	for (i = 0; di_serial[i] && isw_serial_len < 1023; i++) {
++		if (((unsigned char)di_serial[i]) > 0x20) {
++			/* ':' is reserved for use in placeholder serial
++			 * numbers for missing disks */
++			if (di_serial[i] == ':')
++				isw_serial[isw_serial_len] = ';';
++			else
++				isw_serial[isw_serial_len] = di_serial[i];
++			isw_serial_len++;
++		}
++	}
++	isw_serial[isw_serial_len] = 0;
++
++	if (isw_serial_len > MAX_RAID_SERIAL_LEN)
++		memmove(isw_serial,
++			isw_serial + (isw_serial_len - MAX_RAID_SERIAL_LEN),
++			MAX_RAID_SERIAL_LEN);
++
++	return isw_serial;
++}
++
+ static struct isw_disk *
+ _get_disk(struct isw *isw, struct dev_info *di)
+ {
+ 	if (di->serial) {
+ 		int i = isw->num_disks;
+ 		struct isw_disk *disk = isw->disk;
++		const char *isw_serial = dev_info_serial_to_isw(di->serial);
+ 
+ 		while (i--) {
+-			if (!strncmp(di->serial, (const char *) disk[i].serial,
++			if (!strncmp(isw_serial, (const char *) disk[i].serial,
+ 				     MAX_RAID_SERIAL_LEN))
+ 				return disk + i;
+ 		}
+@@ -866,7 +894,8 @@ rd_by_serial(struct raid_set *rs, const 
+ 
+ 	list_for_each_entry(rd, &rs->devs, devs) {
+ 		if (rd->di &&
+-		    !strncmp(rd->di->serial, serial, MAX_RAID_SERIAL_LEN))
++		    !strncmp(dev_info_serial_to_isw(rd->di->serial), serial,
++						    MAX_RAID_SERIAL_LEN))
+ 			return rd;
+ 	}
+ 
+@@ -1297,7 +1326,8 @@ isw_config_disks(struct lib_context *lc,
+ 	struct raid_dev *rd;
+ 
+ 	list_for_each_entry(rd, &rs->devs, devs) {
+-		strncpy((char *) disk[i].serial, rd->di->serial,
++		strncpy((char *) disk[i].serial, 
++			dev_info_serial_to_isw(rd->di->serial),
+ 			MAX_RAID_SERIAL_LEN);
+ 		disk[i].totalBlocks = rd->di->sectors;
+ 
+@@ -2421,7 +2451,8 @@ update_metadata(struct lib_context *lc, 
+ 	while (i--) {
+ 		/* Check if the disk is listed. */
+ 		list_for_each_entry(di, LC_DI(lc), list) {
+-			if (!strncmp(di->serial, (const char *) disk[i].serial,
++			if (!strncmp(dev_info_serial_to_isw(di->serial),
++				     (const char *) disk[i].serial,
+ 				     MAX_RAID_SERIAL_LEN))
+ 				goto goon;
+ 		}
+@@ -2517,7 +2548,8 @@ update_metadata(struct lib_context *lc, 
+ 	new_disk->status = CONFIG_ON_DISK |
+ 		DISK_SMART_EVENT_SUPPORTED |
+ 		CLAIMED_DISK | DETECTED_DISK | USABLE_DISK | CONFIGURED_DISK;
+-	strncpy((char *) new_disk->serial, di->serial, MAX_RAID_SERIAL_LEN);
++	strncpy((char *) new_disk->serial, dev_info_serial_to_isw(di->serial),
++		MAX_RAID_SERIAL_LEN);
+ 
+ 	/* build new isw_disk array */
+ 	for (i = 0; i < isw->num_disks; i++) {

Added: dmraid-1.0.0.rc15-rm_partitions.patch
===================================================================
--- dmraid-1.0.0.rc15-rm_partitions.patch	                        (rev 0)
+++ dmraid-1.0.0.rc15-rm_partitions.patch	2009-06-19 20:48:32 UTC (rev 43102)
@@ -0,0 +1,222 @@
+diff -up 1.0.0.rc15/include/dmraid/lib_context.h.rmparts 1.0.0.rc15/include/dmraid/lib_context.h
+--- 1.0.0.rc15/include/dmraid/lib_context.h.rmparts	2008-06-20 16:17:35.000000000 +0200
++++ 1.0.0.rc15/include/dmraid/lib_context.h	2009-02-13 12:03:57.000000000 +0100
+@@ -169,6 +169,7 @@ enum action {
+ 	PARTCHAR = 0x20000000,
+ 
+ #endif
++	RMPARTITIONS = 0x40000000,
+ };
+ 
+ /* Arguments allowed ? */
+diff -up 1.0.0.rc15/lib/Makefile.in.rmparts 1.0.0.rc15/lib/Makefile.in
+--- 1.0.0.rc15/lib/Makefile.in.rmparts	2008-06-11 15:07:04.000000000 +0200
++++ 1.0.0.rc15/lib/Makefile.in	2009-02-13 12:03:57.000000000 +0100
+@@ -12,6 +12,7 @@ SOURCES=\
+ 	activate/activate.c \
+ 	activate/devmapper.c \
+ 	device/ata.c \
++	device/partition.c \
+ 	device/scan.c \
+ 	device/scsi.c \
+ 	display/display.c \
+diff -up 1.0.0.rc15/lib/device/dev-io.h.rmparts 1.0.0.rc15/lib/device/dev-io.h
+--- 1.0.0.rc15/lib/device/dev-io.h.rmparts	2008-06-12 12:54:32.000000000 +0200
++++ 1.0.0.rc15/lib/device/dev-io.h	2009-02-13 12:03:57.000000000 +0100
+@@ -19,5 +19,6 @@
+ 
+ int discover_devices(struct lib_context *lc, char **devnodes);
+ int removable_device(struct lib_context *lc, char *dev_path);
++int remove_device_partitions(struct lib_context *lc, void *rs, int dummy);
+ 
+ #endif
+diff -up /dev/null 1.0.0.rc15/lib/device/partition.c
+--- /dev/null	2009-02-13 08:38:43.364262886 +0100
++++ 1.0.0.rc15/lib/device/partition.c	2009-02-13 12:03:57.000000000 +0100
+@@ -0,0 +1,59 @@
++/*
++ * Copyright (C) 2009  Hans de Goede <hdegoede at redhat.com>, Red Hat Inc.
++ *                     All rights reserved.
++ *
++ * See file LICENSE at the top of this source tree for license information.
++ */
++#include <linux/blkpg.h>
++#include <sys/ioctl.h>
++#include <errno.h>
++#include <fcntl.h>
++#include "internal.h"
++
++static int
++_remove_subset_partitions(struct lib_context *lc, struct raid_set *rs)
++{
++	struct raid_dev *rd;
++	struct blkpg_partition part = { 0, };
++	struct blkpg_ioctl_arg io = {
++		.op = BLKPG_DEL_PARTITION,
++		.datalen = sizeof(part),
++		.data = &part,
++	};
++
++	list_for_each_entry(rd, &rs->devs, devs) {
++		int fd = open(rd->di->path, O_RDWR);
++		if (fd < 0)
++			LOG_ERR(lc, 0, "opening %s: %s\n", rd->di->path,
++				strerror(errno));
++
++		/* There is no way to enumerate partitions */
++		for (part.pno = 1; part.pno <= 256; part.pno++) {
++			if (ioctl(fd, BLKPG, &io) < 0 && errno != ENXIO &&
++					(part.pno < 16 || errno != EINVAL))
++				LOG_ERR(lc, 0,
++					"removing part %d from %s: %s\n",
++					part.pno, rd->di->path,
++					strerror(errno));
++		}
++	}
++	return 1;
++}
++
++/* Remove the partition block devices (ie sda1) from block devices (ie sda)
++   used in the set, so that things like hal / blkid won't try to access the
++   disks directly */
++int
++remove_device_partitions(struct lib_context *lc, void *v, int dummy)
++{
++	struct raid_set *subset, *rs = v;
++
++	/* Recursively walk down the chain of stacked RAID sets */
++	list_for_each_entry(subset, &rs->sets, list) {
++		/* Remove partitions from devices of set below this one */
++		if (!T_GROUP(rs) && !remove_device_partitions(lc, subset, 0))
++			return 0;
++	}
++
++	return _remove_subset_partitions(lc, rs);
++}
+diff -up 1.0.0.rc15/lib/metadata/metadata.c.rmparts 1.0.0.rc15/lib/metadata/metadata.c
+--- 1.0.0.rc15/lib/metadata/metadata.c.rmparts	2008-09-17 14:58:31.000000000 +0200
++++ 1.0.0.rc15/lib/metadata/metadata.c	2009-02-13 12:03:57.000000000 +0100
+@@ -2147,6 +2147,9 @@ lib_perform(struct lib_context *lc, enum
+ 	if (get_metadata(lc, action, p, argv))
+ 		ret = p->post(lc, p->pre ? p->pre(p->arg) : p->arg);
+ 
++	if (ret && (RMPARTITIONS & action))
++		process_sets(lc, remove_device_partitions, 0, SETS);
++
+ 	if (LOCK == p->lock)
+ 		unlock_resource(lc, NULL);
+ 
+diff -up 1.0.0.rc15/man/dmraid.8.rmparts 1.0.0.rc15/man/dmraid.8
+--- 1.0.0.rc15/man/dmraid.8.rmparts	2008-06-11 15:07:20.000000000 +0200
++++ 1.0.0.rc15/man/dmraid.8	2009-02-13 12:10:11.000000000 +0100
+@@ -8,6 +8,7 @@ dmraid \- discover, configure and activa
+  [-f|--format FORMAT[,FORMAT...]]
+  [{-P|--partchar} CHAR]
+  [-p|--no_partitions]
++ [-Z|--rm_partitions]
+  [--separator SEPARATOR]
+  [-t|--test]
+  [RAID-set...]
+@@ -110,7 +111,11 @@ In case metadata format handlers are cho
+ Useful if devices have multiple metadata signatures.
+ When activating RAID sets,
+ .B -p
+-disables the activation of partitions on them.
++disables the activation of partitions on them, and
++.B -Z
++will make dmraid tell the kernel to remove the partitions from the disks
++underlying the set, ie if sda is part of the set, remove sda1, sda2, etc.
++This prevents applications from directly accessiong the disks bypassing dmraid.
+ RAID set names given on command line don't need to be fully specified
+ (eg, "dmraid -ay sil" would activate all discovered Silicon Image Medley
+ RAID sets).
+diff -up 1.0.0.rc15/tools/commands.c.rmparts 1.0.0.rc15/tools/commands.c
+--- 1.0.0.rc15/tools/commands.c.rmparts	2008-06-20 22:25:33.000000000 +0200
++++ 1.0.0.rc15/tools/commands.c	2009-02-13 12:03:57.000000000 +0100
+@@ -38,7 +38,7 @@ static char const *short_opts = "a:hipP:
+ #endif
+ 	"rR:s::tv"
+ #endif
+-	"VC:S::";
++	"VC:S::Z";
+ 
+ #ifdef HAVE_GETOPTLONG
+ static struct option long_opts[] = {
+@@ -73,6 +73,7 @@ static struct option long_opts[] = {
+ 	{"version", no_argument, NULL, 'V'},
+ 	{"create", required_argument, NULL, 'C'},
+ 	{"spare", optional_argument, NULL, 'S'},
++	{"rm_partitions", no_argument, NULL, 'Z'},
+ 	{NULL, no_argument, NULL, 0}
+ };
+ #endif /* #ifdef HAVE_GETOPTLONG */
+@@ -209,6 +210,7 @@ help(struct lib_context *lc, int arg)
+ 		  "\t[-f|--format FORMAT[,FORMAT...]]\n"
+ 		  "\t[-P|--partchar CHAR]\n"
+ 		  "\t[-p|--no_partitions]\n"
++		  "\t[-Z|--rm_partitions]\n"
+ 		  "\t[--separator SEPARATOR]\n" "\t[RAID-set...]\n", c);
+ 	log_print(lc, "%s\t{-h|--help}\n", c);
+ 	log_print(lc, "%s\t{-V/--version}\n", c);
+@@ -221,7 +223,7 @@ help(struct lib_context *lc, int arg)
+ 		  "\t[-f|--format FORMAT[,FORMAT...]]\n"
+ 		  "\t[-P|--partchar CHAR]\n" "\t[-p|--no_partitions]\n"
+ 		  "\t[--separator SEPARATOR]\n" "\t[-t|--test]\n"
+-		  "\t[RAID-set...]\n", c);
++		  "\t[-Z|--rm_partitions] [RAID-set...]\n", c);
+ 	log_print(lc,
+ 		  "%s\t{-b|--block_devices} *\n"
+ 		  "\t[-c|--display_columns][FIELD[,FIELD...]]...\n"
+@@ -274,7 +276,7 @@ static struct actions actions[] = {
+ 	 UNDEF,			/* Set in check_activate() by mandatory option argument. */
+ 	 UNDEF,
+ 	 ACTIVATE | DEACTIVATE | FORMAT | HELP | IGNORELOCKING | NOPARTITIONS |
+-	 SEPARATOR
++	 SEPARATOR | RMPARTITIONS
+ #ifndef DMRAID_MINI
+ 	 | DBG | TEST | VERBOSE
+ #endif
+@@ -293,7 +295,8 @@ static struct actions actions[] = {
+ #  endif
+ 	 | RAID_DEVICES | RAID_SETS,
+ 	 ACTIVE | INACTIVE | COLUMN | DBG | DUMP | DMERASE | GROUP | HELP |
+-	 IGNORELOCKING | NOPARTITIONS | SEPARATOR | TEST | VERBOSE
++	 IGNORELOCKING | NOPARTITIONS | SEPARATOR | TEST | VERBOSE |
++	 RMPARTITIONS
+ #else
+ 	 , UNDEF
+ #endif
+@@ -310,7 +313,7 @@ static struct actions actions[] = {
+ 	{'P',
+ 	 PARTCHAR,
+ 	 ACTIVATE | DEACTIVATE,
+-	 FORMAT | HELP | IGNORELOCKING | SEPARATOR
++	 FORMAT | HELP | IGNORELOCKING | SEPARATOR | RMPARTITIONS
+ #ifndef DMRAID_MINI
+ 	 | DBG | TEST | VERBOSE
+ #endif
+@@ -323,7 +326,7 @@ static struct actions actions[] = {
+ 	{'p',
+ 	 NOPARTITIONS,
+ 	 ACTIVATE | DEACTIVATE,
+-	 FORMAT | HELP | IGNORELOCKING | SEPARATOR
++	 FORMAT | HELP | IGNORELOCKING | SEPARATOR | RMPARTITIONS
+ #ifndef DMRAID_MINI
+ 	 | DBG | TEST | VERBOSE
+ #endif
+@@ -573,6 +576,15 @@ static struct actions actions[] = {
+ 	 check_spare_argument,
+ 	 LC_HOT_SPARE_SET,
+ 	 },
++	{'Z',
++	 RMPARTITIONS,
++	 ACTIVATE, /* We cannot undo this on DEACTIVATE ! */
++	 DBG | FORMAT | HELP | IGNORELOCKING | NOPARTITIONS | VERBOSE |
++	 SEPARATOR,
++	 ARGS,
++	 NULL,
++	 0,
++	 },
+ };
+ 
+ /*

Added: dmraid-1.0.0.rc15-whitespace.patch
===================================================================
--- dmraid-1.0.0.rc15-whitespace.patch	                        (rev 0)
+++ dmraid-1.0.0.rc15-whitespace.patch	2009-06-19 20:48:32 UTC (rev 43102)
@@ -0,0 +1,16 @@
+===================================================================
+RCS file: /cvs/dm/dmraid/lib/device/scsi.c,v
+retrieving revision 1.3
+retrieving revision 1.4
+diff -u -r1.3 -r1.4
+--- dmraid/lib/device/scsi.c	2008/09/19 14:31:11	1.3
++++ dmraid/lib/device/scsi.c	2008/10/31 12:22:35	1.4
+@@ -110,7 +110,7 @@
+ 		}
+ 
+ 		ret = ret &&
+-		     (di->serial = dbg_strdup((char *) &response[p->start + 1]));
++		      (di->serial = dbg_strdup(remove_white_space (lc, (char *) &response[p->start + 1], serial_len)));
+ 	}
+ 
+ 	dbg_free(response);

Modified: dmraid.install
===================================================================
--- dmraid.install	2009-06-19 20:48:03 UTC (rev 43101)
+++ dmraid.install	2009-06-19 20:48:32 UTC (rev 43102)
@@ -1,16 +1,16 @@
 post_upgrade() {
-  #if [ "$(vercmp $2 1.0.0.rc15)" -lt 0 ]; then
-  #  # important upgrade notice
-  #  echo ">>>"
-  #  echo ">>> IMPORTANT DMRAID UPGRADE NOTICE"
-  #  echo ">>> -------------------------------"
-  #  echo ">>> Version 1.0.15rc introduce a new name scheme:"
-  #  echo ">>> You need to add an additional 'p' in front of your number."
-  #  echo ">>> e.g. <yourname><number> --> <yourname>p<number>"
-  #  echo ">>>      firsthd1           --> firsthdp1"
-  #  echo ">>> Please change your bootloader and fstab accordingly."
-  #  echo ">>>"
-  #fi
+  if [ "$(vercmp $2 1.0.0.rc15)" -lt 0 ]; then
+    # important upgrade notice
+    echo ">>>"
+    echo ">>> IMPORTANT DMRAID UPGRADE NOTICE"
+    echo ">>> -------------------------------"
+    echo ">>> Version 1.0.15rc introduce a new name scheme:"
+    echo ">>> You need to add an additional 'p' in front of your number."
+    echo ">>> e.g. <yourname><number> --> <yourname>p<number>"
+    echo ">>>      firsthd1           --> firsthdp1"
+    echo ">>> Please change your bootloader and fstab accordingly."
+    echo ">>>"
+  fi
   if [ "$(vercmp $2 1.0.0.rc14)" -gt 0 ]; then
     # important downgrade notice
     echo ">>>"




More information about the arch-commits mailing list