SOURCES: multipath-tools-branch.diff - 2008.11.25 GIT

baggins baggins at pld-linux.org
Tue Nov 25 23:29:34 CET 2008


Author: baggins                      Date: Tue Nov 25 22:29:34 2008 GMT
Module: SOURCES                       Tag: HEAD
---- Log message:
- 2008.11.25 GIT

---- Files affected:
SOURCES:
   multipath-tools-branch.diff (1.1 -> 1.2) 

---- Diffs:

================================================================
Index: SOURCES/multipath-tools-branch.diff
diff -u SOURCES/multipath-tools-branch.diff:1.1 SOURCES/multipath-tools-branch.diff:1.2
--- SOURCES/multipath-tools-branch.diff:1.1	Wed Nov 14 00:13:32 2007
+++ SOURCES/multipath-tools-branch.diff	Tue Nov 25 23:29:28 2008
@@ -1,6 +1,335 @@
-diff -ur -x .git multipath-tools-0.4.8/kpartx/devmapper.c multipath-tools/kpartx/devmapper.c
---- multipath-tools-0.4.8/kpartx/devmapper.c	2007-08-03 00:05:37.000000000 +0300
-+++ multipath-tools/kpartx/devmapper.c	2007-11-14 01:07:15.579282644 +0200
+diff --git a/.gitignore b/.gitignore
+new file mode 100644
+index 0000000..5ef5aec
+--- /dev/null
++++ b/.gitignore
+@@ -0,0 +1,9 @@
++*.o
++.dotest
++*~
++*.so
++*.a
++*.gz
++kpartx
++multipath
++multipathd
+diff --git a/Makefile b/Makefile
+index ee554e7..54be0a5 100644
+--- a/Makefile
++++ b/Makefile
+@@ -1,8 +1,7 @@
+ # Makefile
+ #
+ # Copyright (C) 2003 Christophe Varoqui, <christophe.varoqui at free.fr>
+-
+-BUILD = glibc
++#
+ 
+ #
+ # Try to supply the linux kernel headers.
+@@ -20,7 +19,13 @@ endif
+ export KRNLSRC
+ export KRNLOBJ
+ 
+-BUILDDIRS = $(shell find . -mindepth 2 -name Makefile -exec dirname {} \; | grep -vE '^lib|/\.')
++BUILDDIRS = \
++	libmultipath \
++	libmultipath/prioritizers \
++	libmultipath/checkers \
++	multipath \
++	multipathd \
++	kpartx
+ 
+ ifeq   ($(MULTIPATH_VERSION),)
+ VERSION = $(shell basename ${PWD} | cut -d'-' -f3)
+diff --git a/Makefile.inc b/Makefile.inc
+index 7e2d4e6..3e5bca0 100644
+--- a/Makefile.inc
++++ b/Makefile.inc
+@@ -13,31 +13,22 @@ ifeq ($(TOPDIR),)
+ 	TOPDIR	= ..
+ endif
+ 
+-ifeq ($(strip $(BUILD)),klibc)
+-	CC = klcc
+-	klibcdir = /usr/lib/klibc
+-	libdm    = $(klibcdir)/lib/libdevmapper.a
+-endif
+-
+ prefix      = 
+ exec_prefix = $(prefix)
+ bindir      = $(exec_prefix)/sbin
+ libudevdir  = ${prefix}/lib/udev
+-checkersdir = $(TOPDIR)/libcheckers
+ multipathdir = $(TOPDIR)/libmultipath
+ mandir      = $(prefix)/usr/share/man/man8
+ man5dir     = $(prefix)/usr/share/man/man5
+ rcdir	    = $(prefix)/etc/init.d
++libdir	    = $(prefix)/lib/multipath
+ 
+ GZIP        = /bin/gzip -9 -c
+-
+-CHECKERSLIB = $(checkersdir)/libcheckers
+-MULTIPATHLIB = $(multipathdir)/libmultipath
+-
+-INSTALL_PROGRAM = install -s
++INSTALL_PROGRAM = install
+ 
+ OPTFLAGS     = -pipe -g -Wall -Wunused -Wstrict-prototypes
+-CFLAGS	     = $(OPTFLAGS)
++CFLAGS	     = $(OPTFLAGS) -fPIC
++SHARED_FLAGS = -shared
+ 
+ %.o:	%.c
+ 	$(CC) $(CFLAGS) -c -o $@ $<
+diff --git a/devmap_name/Makefile b/devmap_name/Makefile
+deleted file mode 100644
+index d8d8b09..0000000
+--- a/devmap_name/Makefile
++++ /dev/null
+@@ -1,42 +0,0 @@
+-# Makefile
+-#
+-# Copyright (C) 2003 Christophe Varoqui, <christophe.varoqui at free.fr>
+-BUILD = glibc
+-
+-include ../Makefile.inc
+-
+-OBJS = devmap_name.o
+-
+-ifeq ($(strip $(BUILD)),klibc)
+-	OBJS += $(libdm)
+-else
+-	LDFLAGS = -ldevmapper
+-endif
+-
+-EXEC = devmap_name
+-
+-all: $(BUILD)
+-
+-prepare:
+-	rm -f core *.o *.gz
+-
+-glibc: prepare $(OBJS)
+-	$(CC) $(OBJS) -o $(EXEC) $(LDFLAGS)
+-	$(GZIP) $(EXEC).8 > $(EXEC).8.gz
+-
+-klibc: prepare $(OBJS)
+-	$(CC) -static -o $(EXEC) $(OBJS)
+-	$(GZIP) $(EXEC).8 > $(EXEC).8.gz
+-
+-install: $(EXEC) $(EXEC).8
+-	install -d $(DESTDIR)$(bindir)
+-	install -m 755 $(EXEC) $(DESTDIR)$(bindir)/
+-	install -d $(DESTDIR)$(mandir)
+-	install -m 644 $(EXEC).8.gz $(DESTDIR)$(mandir)
+-
+-uninstall:
+-	rm $(DESTDIR)$(bindir)/$(EXEC)
+-	rm $(DESTDIR)$(mandir)/$(EXEC).8.gz
+-
+-clean:
+-	rm -f core *.o $(EXEC) *.gz
+diff --git a/devmap_name/devmap_name.8 b/devmap_name/devmap_name.8
+deleted file mode 100644
+index 86d0931..0000000
+--- a/devmap_name/devmap_name.8
++++ /dev/null
+@@ -1,30 +0,0 @@
+-.TH DEVMAP_NAME 8 "July 2006" "" "Linux Administrator's Manual"
+-.SH NAME
+-devmap_name \- Query device-mapper name
+-.SH SYNOPSIS
+-.BI devmap_name " major minor"
+-.SH DESCRIPTION
+-.B devmap_name
+-queries the device-mapper for the name for the device
+-specified by
+-.I major
+-and
+-.I minor
+-number.
+-.br
+-.B devmap_name
+-can be called from
+-.B udev
+-by the following rule in
+-.IR /etc/udev/udev.rules :
+-.sp
+-.nf
+-KERNEL="dm-[0-9]*", PROGRAM="/sbin/devmap_name %M %m", \\
+-	NAME="%k", SYMLINK="%c"
+-.fi
+-.SH "SEE ALSO"
+-.BR udev (8),
+-.BR dmsetup (8)
+-.SH AUTHORS
+-.B devmap_name
+-was developed by Christophe Varoqui, <christophe.varoqui at free.fr> and others.
+diff --git a/devmap_name/devmap_name.c b/devmap_name/devmap_name.c
+deleted file mode 100644
+index 525c348..0000000
+--- a/devmap_name/devmap_name.c
++++ /dev/null
+@@ -1,88 +0,0 @@
+-/*
+- * Copyright (c) 2004, 2005 Christophe Varoqui
+- */
+-#include <stdio.h>
+-#include <stdlib.h>
+-#include <string.h>
+-#include <ctype.h>
+-#include <unistd.h>
+-#include <linux/kdev_t.h>
+-#include <libdevmapper.h>
+-
+-static void usage(char * progname) {
+-	fprintf(stderr, "usage : %s [-t target type] dev_t\n", progname);
+-	fprintf(stderr, "where dev_t is either 'major minor' or 'major:minor'\n");
+-	exit(1);
+-}
+-
+-int dm_target_type(int major, int minor, char *type)
+-{
+-	struct dm_task *dmt;
+-	void *next = NULL;
+-	uint64_t start, length;
+-	char *target_type = NULL;
+-	char *params;
+-	int r = 1;
+-
+-	if (!(dmt = dm_task_create(DM_DEVICE_STATUS)))
+-		return 1;
+-
+-	if (!dm_task_set_major(dmt, major) ||
+-	    !dm_task_set_minor(dmt, minor))
+-		goto bad;
+-
+-	dm_task_no_open_count(dmt);
+-
+-	if (!dm_task_run(dmt))
+-		goto bad;
+-
+-	if (!type)
+-		goto good;
+-
+-	do {
+-		next = dm_get_next_target(dmt, next, &start, &length,
+-					  &target_type, &params);
+-		if (target_type && strcmp(target_type, type))
+-			goto bad;
+-	} while (next);
+-
+-good:
+-	printf("%s\n", dm_task_get_name(dmt));
+-	r = 0;
+-bad:
+-	dm_task_destroy(dmt);
+-	return r;
+-}
+-
+-int main(int argc, char **argv)
+-{
+-	int c;
+-	int major, minor;
+-	char *target_type = NULL;
+-
+-	while ((c = getopt(argc, argv, "t:")) != -1) {
+-		switch (c) {
+-		case 't':
+-			target_type = optarg;
+-			break;
+-		default:
+-			usage(argv[0]);
+-			return 1;
+-			break;
+-		}
+-	}
+-
+-	/* sanity check */
+-	if (optind == argc - 2) {
+-		major = atoi(argv[argc - 2]);
+-		minor = atoi(argv[argc - 1]);
+-	} else if (optind != argc - 1 ||
+-		   2 != sscanf(argv[argc - 1], "%i:%i", &major, &minor))
+-		usage(argv[0]);
+-
+-	if (dm_target_type(major, minor, target_type))
+-		return 1;
+-                                                                                
+-	return 0;
+-}
+-
+diff --git a/kpartx/Makefile b/kpartx/Makefile
+index b4cca6c..21e4ad4 100644
+--- a/kpartx/Makefile
++++ b/kpartx/Makefile
+@@ -2,49 +2,30 @@
+ #
+ # Copyright (C) 2003 Christophe Varoqui, <christophe.varoqui at free.fr>
+ #
+-BUILD=glibc
+-
+ include ../Makefile.inc
+ 
+ CFLAGS += -I. -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64
+ 
+-ifeq ($(strip $(BUILD)),klibc)
+-	OBJS = bsd.o dos.o kpartx.o solaris.o unixware.o gpt.o crc32.o \
+-	       lopart.o xstrncpy.o devmapper.o dasd.o mac.o sun.o \
+-	       $(MULTIPATHLIB)-$(BUILD).a $(libdm)
+-else
+-	LDFLAGS = -ldevmapper
+-	OBJS = bsd.o dos.o kpartx.o solaris.o unixware.o dasd.o sun.o \
+-	       gpt.o mac.o crc32.o lopart.o xstrncpy.o devmapper.o
+-endif
+-
++LDFLAGS = -ldevmapper
++OBJS = bsd.o dos.o kpartx.o solaris.o unixware.o dasd.o sun.o \
++       gpt.o mac.o crc32.o lopart.o xstrncpy.o devmapper.o
+ EXEC = kpartx
+ 
+-all: $(BUILD)
+-
+-prepare:
+-	rm -f core *.o *.gz
++all: $(EXEC)
+ 
+-glibc: prepare $(OBJS)
++$(EXEC): $(OBJS)
+ 	$(CC) $(OBJS) -o $(EXEC) $(LDFLAGS)
+ 	$(GZIP) $(EXEC).8 > $(EXEC).8.gz
+ 	
+-klibc: prepare $(OBJS)
+-	$(CC) -static -o $(EXEC) $(CRT0) $(OBJS) $(KLIBC) $(LIBGCC)
+-	$(GZIP) $(EXEC).8 > $(EXEC).8.gz
+-
+-$(MULTIPATHLIB)-$(BUILD).a:
+-	make -C $(multipathdir) BUILD=$(BUILD)
+-
+ install: $(EXEC) $(EXEC).8
+-	install -d $(DESTDIR)$(bindir)
++	$(INSTALL_PROGRAM) -d $(DESTDIR)$(bindir)
+ 	$(INSTALL_PROGRAM) -m 755 $(EXEC) $(DESTDIR)$(bindir)
+-	install -d $(DESTDIR)$(libudevdir)
+-	install -m 755 kpartx_id $(DESTDIR)$(libudevdir)
+-	install -d $(DESTDIR)/etc/udev/rules.d
+-	install -m 644 kpartx.rules $(DESTDIR)/etc/udev/rules.d/
+-	install -d $(DESTDIR)$(mandir)
+-	install -m 644 $(EXEC).8.gz $(DESTDIR)$(mandir)
++	$(INSTALL_PROGRAM) -d $(DESTDIR)$(libudevdir)
++	$(INSTALL_PROGRAM) -m 755 kpartx_id $(DESTDIR)$(libudevdir)
++	$(INSTALL_PROGRAM) -d $(DESTDIR)/etc/udev/rules.d
++	$(INSTALL_PROGRAM) -m 644 kpartx.rules $(DESTDIR)/etc/udev/rules.d/
++	$(INSTALL_PROGRAM) -d $(DESTDIR)$(mandir)
++	$(INSTALL_PROGRAM) -m 644 $(EXEC).8.gz $(DESTDIR)$(mandir)
+ 
+ uninstall:
+ 	rm -f $(DESTDIR)$(bindir)/$(EXEC)
+diff --git a/kpartx/devmapper.c b/kpartx/devmapper.c
+index 6e3e198..893d6dd 100644
+--- a/kpartx/devmapper.c
++++ b/kpartx/devmapper.c
 @@ -4,10 +4,12 @@
  #include <stdio.h>
  #include <stdlib.h>
@@ -14,7 +343,7 @@
  
  #define UUID_PREFIX "part%d-"
  #define MAX_PREFIX_LEN 8
-@@ -72,10 +74,10 @@
+@@ -72,10 +74,10 @@ dm_simplecmd (int task, const char *name) {
  
  extern int
  dm_addmap (int task, const char *name, const char *target,
@@ -27,9 +356,10 @@
  
  	if (!(dmt = dm_task_create (task)))
  		return 0;
-diff -ur -x .git multipath-tools-0.4.8/kpartx/devmapper.h multipath-tools/kpartx/devmapper.h
---- multipath-tools-0.4.8/kpartx/devmapper.h	2007-08-03 00:05:37.000000000 +0300
-+++ multipath-tools/kpartx/devmapper.h	2007-11-14 01:07:15.579282644 +0200
+diff --git a/kpartx/devmapper.h b/kpartx/devmapper.h
+index ccdbead..2bd27d2 100644
+--- a/kpartx/devmapper.h
++++ b/kpartx/devmapper.h
 @@ -1,7 +1,7 @@
  int dm_prereq (char *, int, int, int);
  int dm_simplecmd (int, const char *);
@@ -40,9 +370,10 @@
  int dm_map_present (char *);
  char * dm_mapname(int major, int minor);
  dev_t dm_get_first_dep(char *devname);
-diff -ur -x .git multipath-tools-0.4.8/kpartx/gpt.c multipath-tools/kpartx/gpt.c
---- multipath-tools-0.4.8/kpartx/gpt.c	2007-08-03 00:05:37.000000000 +0300
-+++ multipath-tools/kpartx/gpt.c	2007-11-14 01:07:15.579282644 +0200
+diff --git a/kpartx/gpt.c b/kpartx/gpt.c
+index dc846ca..047a829 100644
+--- a/kpartx/gpt.c
++++ b/kpartx/gpt.c
 @@ -36,6 +36,7 @@
  #include <errno.h>
  #include <endian.h>
@@ -70,7 +401,7 @@
  
  struct blkdev_ioctl_param {
          unsigned int block;
-@@ -143,20 +152,14 @@
+@@ -143,20 +152,14 @@ get_sector_size(int filedes)
  static uint64_t
  _get_num_sectors(int filedes)
  {
@@ -95,7 +426,7 @@
  }
  
  /************************************************************
-@@ -193,7 +196,7 @@
+@@ -193,7 +196,7 @@ last_lba(int filedes)
  		sectors = 1;
  	}
  
@@ -104,7 +435,7 @@
  }
  
  
-@@ -220,17 +223,22 @@
+@@ -220,17 +223,22 @@ read_lba(int fd, uint64_t lba, void *buffer, size_t bytes)
  {
  	int sector_size = get_sector_size(fd);
  	off_t offset = lba * sector_size;
@@ -128,7 +459,7 @@
                  bytesread = read_lastoddsector(fd, lba, buffer, bytes);
          }
          return bytesread;
-@@ -505,7 +513,8 @@
+@@ -505,7 +513,8 @@ find_valid_gpt(int fd, gpt_header ** gpt, gpt_entry ** ptes)
  	if (!gpt || !ptes)
  		return 0;
  
@@ -138,9 +469,24 @@
  	good_pgpt = is_gpt_valid(fd, GPT_PRIMARY_PARTITION_TABLE_LBA,
  				 &pgpt, &pptes);
          if (good_pgpt) {
-diff -ur -x .git multipath-tools-0.4.8/kpartx/kpartx.c multipath-tools/kpartx/kpartx.c
---- multipath-tools-0.4.8/kpartx/kpartx.c	2007-08-03 00:05:37.000000000 +0300
-+++ multipath-tools/kpartx/kpartx.c	2007-11-14 01:07:15.579282644 +0200
+diff --git a/kpartx/kpartx.8 b/kpartx/kpartx.8
+index 87b07ce..c61f312 100644
+--- a/kpartx/kpartx.8
++++ b/kpartx/kpartx.8
+@@ -26,6 +26,9 @@ List partition mappings that would be added -a
+ .B \-p
+ set device name-partition number delimiter
+ .TP
++.B \-g
++force GUID partition table (GPT)
++.TP
+ .B \-v
+ Operate verbosely
+ .SH "SEE ALSO"
+diff --git a/kpartx/kpartx.c b/kpartx/kpartx.c
+index dbe2ee2..237d958 100644
+--- a/kpartx/kpartx.c
++++ b/kpartx/kpartx.c
 @@ -25,6 +25,7 @@
  #include <stdlib.h>
  #include <string.h>
@@ -149,7 +495,78 @@
  #include <sys/stat.h>
  #include <sys/types.h>
  #include <ctype.h>
-@@ -366,16 +367,16 @@
+@@ -82,7 +83,7 @@ initpts(void)
+ 	addpts("sun", read_sun_pt);
+ }
+ 
+-static char short_opts[] = "ladgvnp:t:";
++static char short_opts[] = "ladgvp:t:";
+ 
+ /* Used in gpt.c */
+ int force_gpt=0;
+@@ -94,6 +95,7 @@ usage(void) {
+ 	printf("\t-d del partition devmappings\n");
+ 	printf("\t-l list partitions devmappings that would be added by -a\n");
+ 	printf("\t-p set device name-partition number delimiter\n");
++	printf("\t-g force GUID partition table (GPT)\n");
+ 	printf("\t-v verbose\n");
+ 	return 1;
+ }
+@@ -187,8 +189,7 @@ main(int argc, char **argv){
+ 	struct slice all;
+ 	struct pt *ptp;
+ 	enum action what = LIST;
+-	char *p, *type, *diskdevice, *device, *progname;
+-	int lower, upper;
++	char *type, *diskdevice, *device, *progname;
+ 	int verbose = 0;
+ 	char partname[PARTNAME_SIZE], params[PARTNAME_SIZE + 16];
+ 	char * loopdev = NULL;
+@@ -202,7 +203,6 @@ main(int argc, char **argv){
+ 	initpts();
+ 	init_crc32();
+ 
+-	lower = upper = 0;
+ 	type = device = diskdevice = NULL;
+ 	memset(&all, 0, sizeof(all));
+ 	memset(&partname, 0, sizeof(partname));
+@@ -239,14 +239,6 @@ main(int argc, char **argv){
+ 		case 'v':
+ 			verbose = 1;
+ 			break;
+-		case 'n':
+-			p = optarg;
+-			lower = atoi(p);
+-			if ((p[1] == '-') && p[2])
+-				upper = atoi(p+2);
+-			else
+-				upper = lower;
+-			break;
+ 		case 'p':
+ 			delim = optarg;
+ 			break;
+@@ -265,7 +257,7 @@ main(int argc, char **argv){
+ 	}
+ 
+ 	if (dm_prereq(DM_TARGET, 0, 0, 0) && (what == ADD || what == DELETE)) {
+-		fprintf(stderr, "device mapper prerequisites not met\n"); 
++		fprintf(stderr, "device mapper prerequisites not met\n");
+ 		exit(1);
+ 	}
+ 
+@@ -331,10 +323,9 @@ main(int argc, char **argv){
+ 		perror(device);
+ 		exit(1);
+ 	}
+-	if (!lower)
+-		lower = 1;
+ 
+ 	/* add/remove partitions to the kernel devmapper tables */
++	int r = 0;
+ 	for (i = 0; i < ptct; i++) {
+ 		ptp = &pts[i];
+ 
+@@ -366,16 +357,16 @@ main(int argc, char **argv){
  
  				slices[j].minor = m++;
  
@@ -170,7 +587,7 @@
  					int k = slices[j].container - 1;
  
  					if (slices[j].size == 0)
-@@ -387,9 +388,9 @@
+@@ -387,9 +378,9 @@ main(int argc, char **argv){
  					slices[j].minor = m++;
  
  					start = slices[j].start - slices[k].start;
@@ -182,7 +599,38 @@
  					       slices[k].minor, start);
  					c--;
  				}
-@@ -448,8 +449,8 @@
+@@ -401,7 +392,7 @@ main(int argc, char **argv){
+ 			break;
+ 
+ 		case DELETE:
+-			for (j = 0; j < n; j++) {
++			for (j = n-1; j >= 0; j--) {
+ 				if (safe_sprintf(partname, "%s%s%d",
+ 					     mapname, delim, j+1)) {
+ 					fprintf(stderr, "partname too small\n");
+@@ -412,9 +403,10 @@ main(int argc, char **argv){
+ 				if (!slices[j].size || !dm_map_present(partname))
+ 					continue;
+ 
+-				if (!dm_simplecmd(DM_DEVICE_REMOVE, partname))
++				if (!dm_simplecmd(DM_DEVICE_REMOVE, partname)) {
++					r++;
+ 					continue;
+-
++				}
+ 				if (verbose)
+ 					printf("del devmap : %s\n", partname);
+ 			}
+@@ -431,7 +423,7 @@ main(int argc, char **argv){
+ 			break;
+ 
+ 		case ADD:
+-			for (j=0, c = 0; j<n; j++) {
++			for (j = 0, c = 0; j < n; j++) {
+ 				if (slices[j].size == 0)
+ 					continue;
+ 
+@@ -448,8 +440,8 @@ main(int argc, char **argv){
  				}
  				strip_slash(partname);
  
@@ -193,7 +641,30 @@
  					fprintf(stderr, "params too small\n");
  					exit(1);
  				}
-@@ -468,7 +469,7 @@
+@@ -457,18 +449,23 @@ main(int argc, char **argv){
+ 				op = (dm_map_present(partname) ?
+ 					DM_DEVICE_RELOAD : DM_DEVICE_CREATE);
+ 
+-				dm_addmap(op, partname, DM_TARGET, params,
+-					  slices[j].size, uuid, j+1);
+-
+-				if (op == DM_DEVICE_RELOAD)
+-					dm_simplecmd(DM_DEVICE_RESUME,
+-							partname);
+-
++				if (!dm_addmap(op, partname, DM_TARGET, params,
++					  slices[j].size, uuid, j+1)) {
++					fprintf(stderr, "create/reload failed on %s\n",
++						partname);
++					r++;
++				}
++				if (op == DM_DEVICE_RELOAD &&
<<Diff was trimmed, longer than 597 lines>>

---- CVS-web:
    http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/SOURCES/multipath-tools-branch.diff?r1=1.1&r2=1.2&f=u



More information about the pld-cvs-commit mailing list