rpms/udev/devel 0001-volume_id-clean-up-linux_raid-code.patch, NONE, 1.1 0002-man-udevd-fix-udev-8-reference.patch, NONE, 1.1 0003-man-scsi_id.patch, NONE, 1.1 0004-scsi_id-remove-all-sysfs-dependencies.patch, NONE, 1.1 0005-scsi_id-add-SGv4-support.patch, NONE, 1.1 0006-scsi_id-update-man-page.patch, NONE, 1.1 0007-scsi_id-remove-bus_id-option.patch, NONE, 1.1 0008-scsi_id-add-sg-version-option.patch, NONE, 1.1 0009-rules-adapt-to-new-scsi_id.patch, NONE, 1.1 0010-rules-adapt-tape-rules-to-new-scsi_id.patch, NONE, 1.1 0011-cdrom_id-fix-segfault.patch, NONE, 1.1 udev-120-rhrules.patch, NONE, 1.1 udev-121-bsg.patch, NONE, 1.1 .cvsignore, 1.48, 1.49 sources, 1.48, 1.49 udev.spec, 1.244, 1.245 0001-writing-udev-rules-fix-rule-typos.patch, 1.1, NONE 0002-udevinfo-do-not-replace-chars-when-printing-ATTR.patch, 1.1, NONE 0003-vol_id-add-offset-option.patch, 1.1, NONE 0004-cdrom_id-replace-with-version-which-also-exports-me.patch, 1.1, NONE 0005-udevd-at-startup-write-message-including-version-nu.patch, 1.1, NONE 0006-rules_generator-net-rules-always-add-KERNEL-mat.patch, 1.1, NONE 0007-selinux-more-context-settings.patch, 1.1, NONE 0008-selinux-fix-missing-includes.patch, 1.1, NONE 0009-allow-setting-of-MODE-0000.patch, 1.1, NONE 0010-path_id-remove-subsystem-whitelist.patch, 1.1, NONE 0011-logging-add-trailing-newline-to-all-strings.patch, 1.1, NONE 0012-scsi_id-initialize-serial-strings.patch, 1.1, NONE 0013-persistent-device-naming-also-read-unpartitioned-me.patch, 1.1, NONE

Harald Hoyer (harald) fedora-extras-commits at redhat.com
Fri May 16 10:12:11 UTC 2008


Author: harald

Update of /cvs/pkgs/rpms/udev/devel
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv21473

Modified Files:
	.cvsignore sources udev.spec 
Added Files:
	0001-volume_id-clean-up-linux_raid-code.patch 
	0002-man-udevd-fix-udev-8-reference.patch 
	0003-man-scsi_id.patch 
	0004-scsi_id-remove-all-sysfs-dependencies.patch 
	0005-scsi_id-add-SGv4-support.patch 
	0006-scsi_id-update-man-page.patch 
	0007-scsi_id-remove-bus_id-option.patch 
	0008-scsi_id-add-sg-version-option.patch 
	0009-rules-adapt-to-new-scsi_id.patch 
	0010-rules-adapt-tape-rules-to-new-scsi_id.patch 
	0011-cdrom_id-fix-segfault.patch udev-120-rhrules.patch 
	udev-121-bsg.patch 
Removed Files:
	0001-writing-udev-rules-fix-rule-typos.patch 
	0002-udevinfo-do-not-replace-chars-when-printing-ATTR.patch 
	0003-vol_id-add-offset-option.patch 
	0004-cdrom_id-replace-with-version-which-also-exports-me.patch 
	0005-udevd-at-startup-write-message-including-version-nu.patch 
	0006-rules_generator-net-rules-always-add-KERNEL-mat.patch 
	0007-selinux-more-context-settings.patch 
	0008-selinux-fix-missing-includes.patch 
	0009-allow-setting-of-MODE-0000.patch 
	0010-path_id-remove-subsystem-whitelist.patch 
	0011-logging-add-trailing-newline-to-all-strings.patch 
	0012-scsi_id-initialize-serial-strings.patch 
	0013-persistent-device-naming-also-read-unpartitioned-me.patch 
Log Message:
* Fri May 16 2008 Harald Hoyer <harald at redhat.com> 121-1.20080516git
- version 121 + latest git fixes


0001-volume_id-clean-up-linux_raid-code.patch:

--- NEW FILE 0001-volume_id-clean-up-linux_raid-code.patch ---
>From 661a0bea80d129d5df708e36dbaed745c9d8392e Mon Sep 17 00:00:00 2001
From: Karel Zak <kzak at redhat.com>
Date: Tue, 13 May 2008 00:55:53 +0200
Subject: [PATCH] volume_id: clean up linux_raid code

extra global and/or non-static variables suck in shared libraries
use "else if" rather than many "return" calls

Signed-off-by: Karel Zak <kzak at redhat.com>
---
 extras/volume_id/lib/linux_raid.c |   25 ++++++++++++-------------
 1 files changed, 12 insertions(+), 13 deletions(-)

diff --git a/extras/volume_id/lib/linux_raid.c b/extras/volume_id/lib/linux_raid.c
index 96ae7c3..af49658 100644
--- a/extras/volume_id/lib/linux_raid.c
+++ b/extras/volume_id/lib/linux_raid.c
@@ -27,7 +27,7 @@
 #include "libvolume_id.h"
 #include "util.h"
 
-static struct mdp0_super_block {
+struct mdp0_super_block {
 	uint32_t	md_magic;
 	uint32_t	major_version;
 	uint32_t	minor_version;
@@ -44,7 +44,7 @@ static struct mdp0_super_block {
 	uint32_t	set_uuid1;
 	uint32_t	set_uuid2;
 	uint32_t	set_uuid3;
-} PACKED *mdp0;
+} PACKED;
 
 struct mdp1_super_block {
 	uint32_t	magic;
@@ -53,7 +53,7 @@ struct mdp1_super_block {
 	uint32_t	pad0;
 	uint8_t		set_uuid[16];
 	uint8_t		set_name[32];
-} PACKED *mdp1;
+} PACKED;
 
 #define MD_RESERVED_BYTES		0x10000
 #define MD_SB_MAGIC			0xa92b4efc
@@ -61,6 +61,7 @@ struct mdp1_super_block {
 static int volume_id_probe_linux_raid0(struct volume_id *id, uint64_t off, uint64_t size)
 {
 	const uint8_t *buf;
+	struct mdp0_super_block *mdp0;
 	union {
 		uint32_t ints[4];
 		uint8_t bytes[16];
@@ -119,6 +120,7 @@ static int volume_id_probe_linux_raid0(struct volume_id *id, uint64_t off, uint6
 static int volume_id_probe_linux_raid1(struct volume_id *id, uint64_t off, uint64_t size)
 {
 	const uint8_t *buf;
+	struct mdp1_super_block *mdp1;
 
 	info("probing at offset 0x%llx, size 0x%llx\n",
 	    (unsigned long long) off, (unsigned long long) size);
@@ -153,22 +155,19 @@ int volume_id_probe_linux_raid(struct volume_id *id, uint64_t off, uint64_t size
 
 	/* version 1.0 at the end of the device */
 	sboff = (size & ~(0x1000 - 1)) - 0x2000;
-	if (volume_id_probe_linux_raid1(id, off + sboff, size) == 0) {
+	if (volume_id_probe_linux_raid1(id, off + sboff, size) == 0)
 		strcpy(id->type_version, "1.0");
-		return 0;
-	}
 
 	/* version 1.1 at the start of the device */
-	if (volume_id_probe_linux_raid1(id, off, size) == 0) {
+	else if (volume_id_probe_linux_raid1(id, off, size) == 0)
 		strcpy(id->type_version, "1.1");
-		return 0;
-	}
 
 	/* version 1.2 at 4k offset from the start */
-	if (volume_id_probe_linux_raid1(id, off + 0x1000, size) == 0) {
+	else if (volume_id_probe_linux_raid1(id, off + 0x1000, size) == 0)
 		strcpy(id->type_version, "1.2");
-		return 0;
-	}
 
-	return -1;
+	else
+		return -1;
+
+	return 0;
 }
-- 
1.5.4.5


0002-man-udevd-fix-udev-8-reference.patch:

--- NEW FILE 0002-man-udevd-fix-udev-8-reference.patch ---
>From 877bded34a528b6436c12678f2430e2ad466f327 Mon Sep 17 00:00:00 2001
From: MUNEDA Takahiro <muneda.takahiro at jp.fujitsu.com>
Date: Wed, 14 May 2008 04:33:34 +0200
Subject: [PATCH] man: udevd- fix udev(8) reference

---
 udevd.8   |    2 +-
 udevd.xml |    2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/udevd.8 b/udevd.8
index 210ed3f..c6b4811 100644
--- a/udevd.8
+++ b/udevd.8
@@ -57,5 +57,5 @@ Written by Kay Sievers
 <kay\.sievers at vrfy\.org>\.
 .SH "SEE ALSO"
 .PP
-\fBudev\fR(8),
+\fBudev\fR(7),
 \fBudevadm\fR(8)
diff --git a/udevd.xml b/udevd.xml
index 178af4c..8d22a0c 100644
--- a/udevd.xml
+++ b/udevd.xml
@@ -97,7 +97,7 @@
       <refsect1>
         <title>SEE ALSO</title>
         <para><citerefentry>
-            <refentrytitle>udev</refentrytitle><manvolnum>8</manvolnum>
+            <refentrytitle>udev</refentrytitle><manvolnum>7</manvolnum>
           </citerefentry>, 
           <citerefentry>
             <refentrytitle>udevadm</refentrytitle><manvolnum>8</manvolnum>
-- 
1.5.4.5


0003-man-scsi_id.patch:

--- NEW FILE 0003-man-scsi_id.patch ---
>From 838436fa328345ffb0b355e6921b6d75a9b2992f Mon Sep 17 00:00:00 2001
From: MUNEDA Takahiro <muneda.takahiro at jp.fujitsu.com>
Date: Wed, 14 May 2008 04:47:33 +0200
Subject: [PATCH] man: scsi_id

---
 extras/scsi_id/scsi_id.8 |    7 +++++--
 1 files changed, 5 insertions(+), 2 deletions(-)

diff --git a/extras/scsi_id/scsi_id.8 b/extras/scsi_id/scsi_id.8
index 927549b..aa429a5 100644
--- a/extras/scsi_id/scsi_id.8
+++ b/extras/scsi_id/scsi_id.8
@@ -45,7 +45,7 @@ identifier starts with the NAA value of 6):
 
 .sp
 .nf
-# /sbin/scsi_id --page=0x83 --devpath=/block/sdg
+# scsi_id --page=0x83 --devpath=/block/sdg
 3600a0b80000b174b000000d63efc5c8c
 .fi
 .P
@@ -131,7 +131,10 @@ warnings are sent using syslog.
 .nf
 .ft B
 .ft
-/etc/scsi_id.config                  configuration and black/white list entries
+.TP
+\fI/etc/scsi_id.config\fP
+configuration and black/white list entries
+.RE
 .fi
 .LP
 .SH "SEE ALSO"
-- 
1.5.4.5


0004-scsi_id-remove-all-sysfs-dependencies.patch:

--- NEW FILE 0004-scsi_id-remove-all-sysfs-dependencies.patch ---
>From 753417db2ba6faafa3aa30f6b15678e1557e20b8 Mon Sep 17 00:00:00 2001
From: Hannes Reinecke <hare at suse.de>
Date: Wed, 14 May 2008 13:42:41 +0200
Subject: [PATCH] scsi_id: remove all sysfs dependencies

---
 extras/scsi_id/scsi_id.c     |  213 ++++++------------------------------------
 extras/scsi_id/scsi_id.h     |   19 +++-
 extras/scsi_id/scsi_serial.c |   85 ++++++++---------
 3 files changed, 83 insertions(+), 234 deletions(-)

diff --git a/extras/scsi_id/scsi_id.c b/extras/scsi_id/scsi_id.c
index 5381087..4f0233e 100644
--- a/extras/scsi_id/scsi_id.c
+++ b/extras/scsi_id/scsi_id.c
@@ -31,21 +31,14 @@
 #include "scsi_id.h"
 #include "scsi_id_version.h"
 
-/* temporary names for mknod  */
-#define TMP_DIR		"/dev"
-#define TMP_PREFIX	"tmp-scsi"
-
 static const struct option options[] = {
 	{ "device", 1, NULL, 'd' },
 	{ "config", 1, NULL, 'f' },
 	{ "page", 1, NULL, 'p' },
-	{ "devpath", 1, NULL, 's' },
-	{ "fallback-to-sysfs", 0, NULL, 'a' },
 	{ "blacklisted", 0, NULL, 'b' },
 	{ "whitelisted", 0, NULL, 'g' },
 	{ "prefix-bus-id", 0, NULL, 'i' },
 	{ "replace-whitespace", 0, NULL, 'u' },
-	{ "ignore-sysfs", 0, NULL, 'n' },
 	{ "verbose", 0, NULL, 'v' },
 	{ "version", 0, NULL, 'V' },
 	{ "export", 0, NULL, 'x' },
@@ -53,21 +46,17 @@ static const struct option options[] = {
 	{}
 };
 
-static const char short_options[] = "abd:f:ghinp:s:uvVx";
+static const char short_options[] = "d:f:ghip:uvVx";
 static const char dev_short_options[] = "bgp:";
 
 static int all_good;
-static int always_info;
 static int dev_specified;
-static int sys_specified;
 static char config_file[MAX_PATH_LEN] = SCSI_ID_CONFIG_FILE;
 static int display_bus_id;
 static enum page_code default_page_code;
 static int use_stderr;
 static int debug;
-static int hotplug_mode;
 static int reformat_serial;
-static int ignore_sysfs;
 static int export;
 static char vendor_str[64];
 static char model_str[64];
@@ -169,35 +158,6 @@ static void set_type(char *to, const char *from, size_t len)
 	to[len-1] = '\0';
 }
 
-static int create_tmp_dev(const char *devpath, char *tmpdev, int dev_type)
-{
-	unsigned int maj, min;
-	const char *attr;
-
-	dbg("%s\n", devpath);
-	attr = sysfs_attr_get_value(devpath, "dev");
-	if (attr == NULL) {
-		dbg("%s: could not get dev attribute: %s\n", devpath, strerror(errno));
-		return -1;
-	}
-
-	dbg("dev value %s\n", attr);
-	if (sscanf(attr, "%u:%u", &maj, &min) != 2) {
-		err("%s: invalid dev major/minor\n", devpath);
-		return -1;
-	}
-
-	snprintf(tmpdev, MAX_PATH_LEN, "%s/%s-maj%d-min%d-%u",
-		 TMP_DIR, TMP_PREFIX, maj, min, getpid());
-
-	dbg("tmpdev '%s'\n", tmpdev);
-	if (mknod(tmpdev, 0600 | dev_type, makedev(maj, min))) {
-		err("mknod failed: %s\n", strerror(errno));
-		return -1;
-	}
-	return 0;
-}
-
 /*
  * get_value:
  *
@@ -415,7 +375,7 @@ static int get_file_options(const char *vendor, const char *model,
 }
 
 static int set_options(int argc, char **argv, const char *short_opts,
-		       char *target, char *maj_min_dev)
+		       char *maj_min_dev)
 {
 	int option;
 
@@ -436,9 +396,6 @@ static int set_options(int argc, char **argv, const char *short_opts,
 			dbg("option '%c'\n", option);
 
 		switch (option) {
-		case 'a':
-			always_info = 1;
-			break;
 		case 'b':
 			all_good = 0;
 			break;
@@ -465,11 +422,8 @@ static int set_options(int argc, char **argv, const char *short_opts,
 		case 'h':
 			printf("Usage: scsi_id OPTIONS <device>\n"
 			       "  --device               device node for SG_IO commands\n"
-			       "  --devpath              sysfs devpath\n"
 			       "  --config               location of config file\n"
 			       "  --page                 SCSI page (0x80, 0x83, pre-spc3-83)\n"
-			       "  --fallback-to-sysfs    print sysfs values if inquiry fails\n"
-			       "  --ignore-sysfs         ignore sysfs entries\n"
 			       "  --blacklisted          threat device as blacklisted\n"
 			       "  --whitelisted          threat device as whitelisted\n"
 			       "  --prefix-bus-id        prefix SCSI bus id\n"
@@ -497,16 +451,6 @@ static int set_options(int argc, char **argv, const char *short_opts,
 			}
 			break;
 
-		case 'n':
-			ignore_sysfs = 1;
-			break;
-
-		case 's':
-			sys_specified = 1;
-			strncpy(target, optarg, MAX_PATH_LEN);
-			target[MAX_PATH_LEN-1] = '\0';
-			break;
-
 		case 'u':
 			reformat_serial = 1;
 			break;
@@ -528,10 +472,15 @@ static int set_options(int argc, char **argv, const char *short_opts,
 			exit(1);
 		}
 	}
+	if (optind < argc && !dev_specified) {
+		dev_specified = 1;
+		strncpy(maj_min_dev, argv[optind], MAX_PATH_LEN);
+		maj_min_dev[MAX_PATH_LEN-1] = '\0';
+	}
 	return 0;
 }
 
-static int per_dev_options(struct sysfs_device *dev_scsi, int *good_bad, int *page_code)
+static int per_dev_options(struct scsi_id_device *dev_scsi, int *good_bad, int *page_code)
 {
 	int retval;
 	int newargc;
@@ -590,54 +539,18 @@ static int per_dev_options(struct sysfs_device *dev_scsi, int *good_bad, int *pa
 	return retval;
 }
 
-static int set_sysfs_values(struct sysfs_device *dev_scsi)
-{
-	const char *vendor, *model, *type;
-
-	vendor = sysfs_attr_get_value(dev_scsi->devpath, "vendor");
-	if (!vendor) {
-		info("%s: cannot get vendor attribute\n", dev_scsi->devpath);
-		return -1;
-	}
-	set_str(vendor_str, vendor, sizeof(vendor_str)-1);
-
-	model = sysfs_attr_get_value(dev_scsi->devpath, "model");
-	if (!model) {
-		info("%s: cannot get model attribute\n", dev_scsi->devpath);
-		return -1;
-	}
-	set_str(model_str, model, sizeof(model_str)-1);
-
-	type = sysfs_attr_get_value(dev_scsi->devpath, "type");
-	if (!type) {
-		info("%s: cannot get type attribute\n", dev_scsi->devpath);
-		return -1;
-	}
-	set_type(type_str, type, sizeof(type_str));
-
-	type = sysfs_attr_get_value(dev_scsi->devpath, "rev");
-	if (!type) {
-		info("%s: cannot get type attribute\n", dev_scsi->devpath);
-		return -1;
-	}
-	set_str(revision_str, type, sizeof(revision_str)-1);
-
-	return 0;
-}
-
-static int set_inq_values(struct sysfs_device *dev_scsi, const char *path)
+static int set_inq_values(struct scsi_id_device *dev_scsi, const char *path)
 {
 	int retval;
-	char vendor[8], model[16], type[4], rev[4];
 
-	retval = scsi_std_inquiry(dev_scsi, path, vendor, model, rev, type);
+	retval = scsi_std_inquiry(dev_scsi, path);
 	if (retval)
 	    return retval;
 
-	set_str(vendor_str, vendor, 8);
-	set_str(model_str, model, 16);
-	set_type(type_str, type, sizeof(type_str) - 1);
-	set_str(revision_str, rev, sizeof(revision_str) -1);
+	set_str(vendor_str, dev_scsi->vendor, 8);
+	set_str(model_str, dev_scsi->model, 16);
+	set_type(type_str, dev_scsi->type, sizeof(type_str) - 1);
+	set_str(revision_str, dev_scsi->revision, sizeof(revision_str) -1);
 
 	return 0;
 }
@@ -674,60 +587,25 @@ static void format_serial(char *serial)
  * memory etc. return 2, and return 1 for expected cases (like broken
  * device found) that do not print an id.
  */
-static int scsi_id(const char *devpath, char *maj_min_dev)
+static int scsi_id(char *maj_min_dev)
 {
 	int retval;
-	int dev_type = 0;
-	struct sysfs_device *dev;
-	struct sysfs_device *dev_scsi = NULL;
+	struct scsi_id_device dev_scsi;
 	int good_dev;
 	int page_code;
-	char serial[MAX_SERIAL_LEN] = "";
 	char serial_short[MAX_SERIAL_LEN] = "";
-	const char *bus_str = NULL;
-
-	dbg("devpath %s\n", devpath);
 
-	dev = sysfs_device_get(devpath);
-	if (dev == NULL) {
-		err("unable to access '%s'\n", devpath);
-		return 1;
-	}
-
-	if (strcmp(dev->subsystem, "block") == 0)
-		dev_type = S_IFBLK;
-	else
-		dev_type = S_IFCHR;
-
-	/* mknod a temp dev to communicate with the device */
-	if (!dev_specified && create_tmp_dev(dev->devpath, maj_min_dev, dev_type)) {
-		dbg("create_tmp_dev failed\n");
-		return 1;
-	}
-
-	if (!ignore_sysfs) {
-		/* get scsi parent device */
-		dev_scsi = sysfs_device_get_parent_with_subsystem(dev, "scsi");
-		if (dev_scsi == NULL) {
-			err("unable to access parent device of '%s'\n", devpath);
-			return 1;
-		}
-		set_sysfs_values(dev_scsi);
-		bus_str = "scsi";
-	} else {
-		dev_scsi = dev;
-		set_inq_values(dev_scsi, maj_min_dev);
-	}
+	set_inq_values(&dev_scsi, maj_min_dev);
 
 	/* get per device (vendor + model) options from the config file */
-	retval = per_dev_options(dev_scsi, &good_dev, &page_code);
+	retval = per_dev_options(&dev_scsi, &good_dev, &page_code);
 	dbg("per dev options: good %d; page code 0x%x\n", good_dev, page_code);
 
 	if (!good_dev) {
 		retval = 1;
-	} else if (scsi_get_serial(dev_scsi, maj_min_dev, page_code,
-				   serial, serial_short, MAX_SERIAL_LEN)) {
-		retval = always_info?0:1;
+	} else if (scsi_get_serial(&dev_scsi, maj_min_dev, page_code,
+				   serial_short, MAX_SERIAL_LEN)) {
+		retval = 1;
 	} else {
 		retval = 0;
 	}
@@ -738,59 +616,33 @@ static int scsi_id(const char *devpath, char *maj_min_dev)
 			printf("ID_VENDOR=%s\n", vendor_str);
 			printf("ID_MODEL=%s\n", model_str);
 			printf("ID_REVISION=%s\n", revision_str);
-			set_str(serial_str, serial, sizeof(serial_str));
+			set_str(serial_str, dev_scsi.serial, sizeof(serial_str));
 			printf("ID_SERIAL=%s\n", serial_str);
 			set_str(serial_str, serial_short, sizeof(serial_str));
 			printf("ID_SERIAL_SHORT=%s\n", serial_str);
 			printf("ID_TYPE=%s\n", type_str);
-			if (bus_str != NULL)
-				printf("ID_BUS=%s\n", bus_str);
 		} else {
 			if (reformat_serial)
-				format_serial(serial);
-			if (display_bus_id)
-				printf("%s: ", dev_scsi->kernel);
-			printf("%s\n", serial);
+				format_serial(dev_scsi.serial);
+			printf("%s\n", dev_scsi.serial);
 		}
-		dbg("%s\n", serial);
+		dbg("%s\n", dev_scsi.serial);
 		retval = 0;
 	}
 
-	if (!dev_specified)
-		unlink(maj_min_dev);
-
 	return retval;
 }
 
 int main(int argc, char **argv)
 {
 	int retval = 0;
-	char devpath[MAX_PATH_LEN];
 	char maj_min_dev[MAX_PATH_LEN];
 	int newargc;
-	const char *env;
 	char **newargv;
 
 	logging_init("scsi_id");
-	sysfs_init();
 	dbg("argc is %d\n", argc);
 
-	/* sysfs path can be overridden for testing */
-	env = getenv("SYSFS_PATH");
-	if (env) {
-		strncpy(sysfs_path, env, sizeof(sysfs_path));
-		sysfs_path[sizeof(sysfs_path)-1] = '\0';
-	} else
-		strcpy(sysfs_path, "/sys");
-
-	env = getenv("DEVPATH");
-	if (env) {
-		hotplug_mode = 1;
-		sys_specified = 1;
-		strncpy(devpath, env, MAX_PATH_LEN);
-		devpath[sizeof(devpath)-1] = '\0';
-	}
-
 	/*
 	 * Get config file options.
 	 */
@@ -801,8 +653,7 @@ int main(int argc, char **argv)
 		goto exit;
 	}
 	if (newargv && (retval == 0)) {
-		if (set_options(newargc, newargv, short_options, devpath,
-				maj_min_dev) < 0) {
+		if (set_options(newargc, newargv, short_options, maj_min_dev) < 0) {
 			retval = 2;
 			goto exit;
 		}
@@ -810,22 +661,20 @@ int main(int argc, char **argv)
 	}
 
 	/*
-	 * Get command line options (overriding any config file or DEVPATH
-	 * settings).
+	 * Get command line options (overriding any config file settings).
 	 */
-	if (set_options(argc, argv, short_options, devpath, maj_min_dev) < 0)
+	if (set_options(argc, argv, short_options, maj_min_dev) < 0)
 		exit(1);
 
-	if (!sys_specified) {
-		info("--devpath=<path> must be specified\n");
+	if (!dev_specified) {
+		info("no device specified\n");
 		retval = 1;
 		goto exit;
 	}
 
-	retval = scsi_id(devpath, maj_min_dev);
+	retval = scsi_id(maj_min_dev);
 
 exit:
-	sysfs_cleanup();
 	logging_close();
 	return retval;
 }
diff --git a/extras/scsi_id/scsi_id.h b/extras/scsi_id/scsi_id.h
index 0e2b297..3b3a000 100644
--- a/extras/scsi_id/scsi_id.h
+++ b/extras/scsi_id/scsi_id.h
@@ -30,13 +30,21 @@
  */
 #define MAX_BUFFER_LEN	256
 
-extern int scsi_std_inquiry(struct sysfs_device *dev_scsi, const char *devname,
-			    char *vendor, char *model, char *rev, char *type);
-extern int scsi_get_serial (struct sysfs_device *dev_scsi, const char *devname,
-			    int page_code, char *serial, char *serial_short, int len);
+struct scsi_id_device {
+	char vendor[9];
+	char model[17];
+	char revision[5];
+	char type[33];
+	char kernel[64];
+	char serial[MAX_SERIAL_LEN];
+};
+
+extern int scsi_std_inquiry(struct scsi_id_device *dev_scsi, const char *devname);
+extern int scsi_get_serial (struct scsi_id_device *dev_scsi, const char *devname,
+			    int page_code, char *serial_short, int len);
 
 /*
- * Page code values. 
+ * Page code values.
  */
 enum page_code {
 		PAGE_83_PRE_SPC3 = -0x83,
@@ -44,3 +52,4 @@ enum page_code {
 		PAGE_80		 = 0x80,
 		PAGE_83		 = 0x83,
 };
+
diff --git a/extras/scsi_id/scsi_serial.c b/extras/scsi_id/scsi_serial.c
index 28e82db..32bb0f4 100644
--- a/extras/scsi_id/scsi_serial.c
+++ b/extras/scsi_id/scsi_serial.c
@@ -148,7 +148,7 @@ static int sg_err_category3(struct sg_io_hdr *hp)
 				   hp->sbp, hp->sb_len_wr);
 }
 
-static int scsi_dump_sense(struct sysfs_device *dev_scsi, struct sg_io_hdr *io)
+static int scsi_dump_sense(struct scsi_id_device *dev_scsi, struct sg_io_hdr *io)
 {
 	unsigned char *sense_buffer;
 	int s;
@@ -254,7 +254,7 @@ static int scsi_dump_sense(struct sysfs_device *dev_scsi, struct sg_io_hdr *io)
 	return -1;
 }
 
-static int scsi_dump(struct sysfs_device *dev_scsi, struct sg_io_hdr *io)
+static int scsi_dump(struct scsi_id_device *dev_scsi, struct sg_io_hdr *io)
 {
 	if (!io->status && !io->host_status && !io->msg_status &&
 	    !io->driver_status) {
@@ -273,7 +273,7 @@ static int scsi_dump(struct sysfs_device *dev_scsi, struct sg_io_hdr *io)
 		return -1;
 }
 
-static int scsi_inquiry(struct sysfs_device *dev_scsi, int fd,
+static int scsi_inquiry(struct scsi_id_device *dev_scsi, int fd,
 			unsigned char evpd, unsigned char page,
 			unsigned char *buf, unsigned int buflen)
 {
@@ -343,11 +343,10 @@ error:
 }
 
 /* Get list of supported EVPD pages */
-static int do_scsi_page0_inquiry(struct sysfs_device *dev_scsi, int fd,
+static int do_scsi_page0_inquiry(struct scsi_id_device *dev_scsi, int fd,
 				 unsigned char *buffer, unsigned int len)
 {
 	int retval;
-	const char *vendor;
 
 	memset(buffer, 0, len);
 	retval = scsi_inquiry(dev_scsi, fd, 1, 0x0, buffer, len);
@@ -375,12 +374,7 @@ static int do_scsi_page0_inquiry(struct sysfs_device *dev_scsi, int fd,
 		 * If the vendor id appears in the page assume the page is
 		 * invalid.
 		 */
-		vendor = sysfs_attr_get_value(dev_scsi->devpath, "vendor");
-		if (!vendor) {
-			info("%s: cannot get model attribute\n", dev_scsi->kernel);
-			return 1;
-		}
-		if (!strncmp((char *)&buffer[VENDOR_LENGTH], vendor, VENDOR_LENGTH)) {
+		if (!strncmp((char *)&buffer[VENDOR_LENGTH], dev_scsi->vendor, VENDOR_LENGTH)) {
 			info("%s: invalid page0 data\n", dev_scsi->kernel);
 			return 1;
 		}
@@ -392,25 +386,14 @@ static int do_scsi_page0_inquiry(struct sysfs_device *dev_scsi, int fd,
  * The caller checks that serial is long enough to include the vendor +
  * model.
  */
-static int prepend_vendor_model(struct sysfs_device *dev_scsi, char *serial)
+static int prepend_vendor_model(struct scsi_id_device *dev_scsi, char *serial)
 {
-	const char *attr;
 	int ind;
 
-	attr = sysfs_attr_get_value(dev_scsi->devpath, "vendor");
-	if (!attr) {
-		info("%s: cannot get vendor attribute\n", dev_scsi->kernel);
-		return 1;
-	}
-	strncpy(serial, attr, VENDOR_LENGTH);
+	strncpy(serial, dev_scsi->vendor, VENDOR_LENGTH);
 	ind = strlen(serial) - 1;
 
-	attr = sysfs_attr_get_value(dev_scsi->devpath, "model");
-	if (!attr) {
-		info("%s: cannot get model attribute\n", dev_scsi->kernel);
-		return 1;
-	}
-	strncat(serial, attr, MODEL_LENGTH);
+	strncat(serial, dev_scsi->model, MODEL_LENGTH);
 	ind = strlen(serial) - 1;
 	ind++;
 
@@ -430,7 +413,7 @@ static int prepend_vendor_model(struct sysfs_device *dev_scsi, char *serial)
  * check_fill_0x83_id - check the page 0x83 id, if OK allocate and fill
  * serial number.
  **/
-static int check_fill_0x83_id(struct sysfs_device *dev_scsi,
+static int check_fill_0x83_id(struct scsi_id_device *dev_scsi,
 			      unsigned char *page_83,
 			      const struct scsi_id_search_values
 			      *id_search, char *serial, char *serial_short, int max_len)
@@ -521,7 +504,7 @@ static int check_fill_0x83_id(struct sysfs_device *dev_scsi,
 }
 
 /* Extract the raw binary from VPD 0x83 pre-SPC devices */
-static int check_fill_0x83_prespc3(struct sysfs_device *dev_scsi,
+static int check_fill_0x83_prespc3(struct scsi_id_device *dev_scsi,
 			           unsigned char *page_83,
 			           const struct scsi_id_search_values
 			           *id_search, char *serial, char *serial_short, int max_len)
@@ -543,7 +526,7 @@ static int check_fill_0x83_prespc3(struct sysfs_device *dev_scsi,
 
 
 /* Get device identification VPD page */
-static int do_scsi_page83_inquiry(struct sysfs_device *dev_scsi, int fd,
+static int do_scsi_page83_inquiry(struct scsi_id_device *dev_scsi, int fd,
 				  char *serial, char *serial_short, int len)
 {
 	int retval;
@@ -633,7 +616,7 @@ static int do_scsi_page83_inquiry(struct sysfs_device *dev_scsi, int fd,
  * Return the hard coded error code value 2 if the page 83 reply is not
  * conformant to the SCSI-2 format.
  */
-static int do_scsi_page83_prespc3_inquiry(struct sysfs_device *dev_scsi, int fd,
+static int do_scsi_page83_prespc3_inquiry(struct scsi_id_device *dev_scsi, int fd,
 				          char *serial, char *serial_short, int len)
 {
 	int retval;
@@ -695,7 +678,7 @@ static int do_scsi_page83_prespc3_inquiry(struct sysfs_device *dev_scsi, int fd,
 }
 
 /* Get unit serial number VPD page */
-static int do_scsi_page80_inquiry(struct sysfs_device *dev_scsi, int fd,
+static int do_scsi_page80_inquiry(struct scsi_id_device *dev_scsi, int fd,
 				  char *serial, char *serial_short, int max_len)
 {
 	int retval;
@@ -736,30 +719,38 @@ static int do_scsi_page80_inquiry(struct sysfs_device *dev_scsi, int fd,
 	return 0;
 }
 
-int scsi_std_inquiry(struct sysfs_device *dev_scsi, const char *devname,
-		     char *vendor, char *model, char *rev, char *type)
+int scsi_std_inquiry(struct scsi_id_device *dev_scsi, const char *devname)
 {
 	int retval;
 	int fd;
 	unsigned char buf[SCSI_INQ_BUFF_LEN];
+	struct stat statbuf;
 
 	dbg("opening %s\n", devname);
 	fd = open(devname, O_RDONLY | O_NONBLOCK);
 	if (fd < 0) {
-		info("%s: cannot open %s: %s\n",
-		    dev_scsi->kernel, devname, strerror(errno));
+		info("scsi_id: cannot open %s: %s\n",
+		     devname, strerror(errno));
 		return 1;
 	}
 
+	if (fstat(fd, &statbuf) < 0) {
+		info("scsi_id: cannot stat %s: %s\n",
+		     devname, strerror(errno));
+		return 2;
+	}
+	sprintf(dev_scsi->kernel,"%d:%d", major(statbuf.st_rdev),
+		minor(statbuf.st_rdev));
+
 	memset(buf, 0, SCSI_INQ_BUFF_LEN);
 	retval = scsi_inquiry(dev_scsi, fd, 0, 0, buf, SCSI_INQ_BUFF_LEN);
 	if (retval < 0)
 		return retval;
 
-	memcpy(vendor, buf + 8, 8);
-	memcpy(model, buf + 16, 16);
-	memcpy(rev, buf + 32, 4);
-	sprintf(type,"%x", buf[0] & 0x1f);
+	memcpy(dev_scsi->vendor, buf + 8, 8);
+	memcpy(dev_scsi->model, buf + 16, 16);
+	memcpy(dev_scsi->revision, buf + 32, 4);
+	sprintf(dev_scsi->type,"%x", buf[0] & 0x1f);
 
 	if (close(fd) < 0)
 		info("%s: close failed: %s\n", dev_scsi->kernel, strerror(errno));
@@ -767,15 +758,15 @@ int scsi_std_inquiry(struct sysfs_device *dev_scsi, const char *devname,
 	return 0;
 }
 
-int scsi_get_serial (struct sysfs_device *dev_scsi, const char *devname,
-		     int page_code, char *serial, char *serial_short, int len)
+int scsi_get_serial (struct scsi_id_device *dev_scsi, const char *devname,
+		     int page_code, char *serial_short, int len)
 {
 	unsigned char page0[SCSI_INQ_BUFF_LEN];
 	int fd;
 	int ind;
 	int retval;
 
-	memset(serial, 0, len);
+	memset(dev_scsi->serial, 0, len);
 	dbg("opening %s\n", devname);
 	fd = open(devname, O_RDONLY | O_NONBLOCK);
 	if (fd < 0) {
@@ -785,7 +776,7 @@ int scsi_get_serial (struct sysfs_device *dev_scsi, const char *devname,
 	}
 
 	if (page_code == PAGE_80) {
-		if (do_scsi_page80_inquiry(dev_scsi, fd, serial, serial_short, len)) {
+		if (do_scsi_page80_inquiry(dev_scsi, fd, dev_scsi->serial, serial_short, len)) {
 			retval = 1;
 			goto completed;
 		} else  {
@@ -793,7 +784,7 @@ int scsi_get_serial (struct sysfs_device *dev_scsi, const char *devname,
 			goto completed;
 		}
 	} else if (page_code == PAGE_83) {
-		if (do_scsi_page83_inquiry(dev_scsi, fd, serial, serial_short, len)) {
+		if (do_scsi_page83_inquiry(dev_scsi, fd, dev_scsi->serial, serial_short, len)) {
 			retval = 1;
 			goto completed;
 		} else  {
@@ -801,7 +792,7 @@ int scsi_get_serial (struct sysfs_device *dev_scsi, const char *devname,
 			goto completed;
 		}
 	} else if (page_code == PAGE_83_PRE_SPC3) {
-		retval = do_scsi_page83_prespc3_inquiry(dev_scsi, fd, serial, serial_short, len);
+		retval = do_scsi_page83_prespc3_inquiry(dev_scsi, fd, dev_scsi->serial, serial_short, len);
 		if (retval) {
 			/*
 			 * Fallback to servicing a SPC-2/3 compliant page 83
@@ -809,7 +800,7 @@ int scsi_get_serial (struct sysfs_device *dev_scsi, const char *devname,
 			 * conform to pre-SPC3 expectations.
 			 */
 			if (retval == 2) {
-				if (do_scsi_page83_inquiry(dev_scsi, fd, serial, serial_short, len)) {
+				if (do_scsi_page83_inquiry(dev_scsi, fd, dev_scsi->serial, serial_short, len)) {
 					retval = 1;
 					goto completed;
 				} else  {
@@ -849,7 +840,7 @@ int scsi_get_serial (struct sysfs_device *dev_scsi, const char *devname,
 	for (ind = 4; ind <= page0[3] + 3; ind++)
 		if (page0[ind] == PAGE_83)
 			if (!do_scsi_page83_inquiry(dev_scsi, fd,
-						    serial, serial_short, len)) {
+						    dev_scsi->serial, serial_short, len)) {
 				/*
 				 * Success
 				 */
@@ -860,7 +851,7 @@ int scsi_get_serial (struct sysfs_device *dev_scsi, const char *devname,
 	for (ind = 4; ind <= page0[3] + 3; ind++)
 		if (page0[ind] == PAGE_80)
 			if (!do_scsi_page80_inquiry(dev_scsi, fd,
-						    serial, serial_short, len)) {
+						    dev_scsi->serial, serial_short, len)) {
 				/*
 				 * Success
 				 */
-- 
1.5.4.5


0005-scsi_id-add-SGv4-support.patch:

--- NEW FILE 0005-scsi_id-add-SGv4-support.patch ---
>From 78d9ecfd4f1e37f7453e55e71f2909a58706ae10 Mon Sep 17 00:00:00 2001
From: Hannes Reinecke <hare at suse.de>
Date: Wed, 14 May 2008 13:55:49 +0200
Subject: [PATCH] scsi_id: add SGv4 support

Fall back to SGv3, if SGv3 returns a failure/is not available.
---
 extras/scsi_id/Makefile      |    4 +-
 extras/scsi_id/scsi_id.c     |    2 +
 extras/scsi_id/scsi_id.h     |    1 +
 extras/scsi_id/scsi_serial.c |  103 ++++++++++++++++++++++++++++++++----------
 4 files changed, 84 insertions(+), 26 deletions(-)

diff --git a/extras/scsi_id/Makefile b/extras/scsi_id/Makefile
index 870296a..ca067d0 100644
--- a/extras/scsi_id/Makefile
+++ b/extras/scsi_id/Makefile
@@ -6,11 +6,11 @@
 # Released under the GNU General Public License, version 2.
 #
 
-SCSI_ID_VERSION = 0.9
+SCSI_ID_VERSION = 2.0
 
 PROG = scsi_id
 OBJS= scsi_serial.o
-HEADERS = scsi_id.h scsi.h scsi_id_version.h
+HEADERS = scsi_id.h scsi.h scsi_id_version.h bsg.h
 GEN_HEADERS = scsi_id_version.h
 MAN_PAGES = scsi_id.8
 
diff --git a/extras/scsi_id/scsi_id.c b/extras/scsi_id/scsi_id.c
index 4f0233e..0f09f29 100644
--- a/extras/scsi_id/scsi_id.c
+++ b/extras/scsi_id/scsi_id.c
@@ -543,6 +543,8 @@ static int set_inq_values(struct scsi_id_device *dev_scsi, const char *path)
 {
 	int retval;
 
+	dev_scsi->use_sg = 4;
+
 	retval = scsi_std_inquiry(dev_scsi, path);
 	if (retval)
 	    return retval;
diff --git a/extras/scsi_id/scsi_id.h b/extras/scsi_id/scsi_id.h
index 3b3a000..680c39d 100644
--- a/extras/scsi_id/scsi_id.h
+++ b/extras/scsi_id/scsi_id.h
@@ -37,6 +37,7 @@ struct scsi_id_device {
 	char type[33];
 	char kernel[64];
 	char serial[MAX_SERIAL_LEN];
+	int use_sg;
 };
 
 extern int scsi_std_inquiry(struct scsi_id_device *dev_scsi, const char *devname);
diff --git a/extras/scsi_id/scsi_serial.c b/extras/scsi_id/scsi_serial.c
index 32bb0f4..202ffc0 100644
--- a/extras/scsi_id/scsi_serial.c
+++ b/extras/scsi_id/scsi_serial.c
@@ -22,7 +22,12 @@
 #include <stdlib.h>
 #include <unistd.h>
 #include <syslog.h>
+#include <inttypes.h>
+#include <scsi/scsi.h>
 #include <scsi/sg.h>
+#include <linux/types.h>
+/* #include <linux/bsg.h> */
+#include "bsg.h"
 
 #include "../../udev.h"
 #include "scsi.h"
@@ -94,10 +99,7 @@ static int sg_err_category_new(int scsi_status, int msg_status, int
 	 * XXX change to return only two values - failed or OK.
 	 */
 
-	/*
-	 * checks msg_status
-	 */
-	if (!scsi_status && !msg_status && !host_status && !driver_status)
+	if (!scsi_status && !host_status && !driver_status)
 		return SG_ERR_CAT_CLEAN;
 
 	if ((scsi_status == SCSI_CHECK_CONDITION) ||
@@ -148,11 +150,18 @@ static int sg_err_category3(struct sg_io_hdr *hp)
 				   hp->sbp, hp->sb_len_wr);
 }
 
-static int scsi_dump_sense(struct scsi_id_device *dev_scsi, struct sg_io_hdr *io)
+static int sg_err_category4(struct sg_io_v4 *hp)
+{
+	return sg_err_category_new(hp->device_status, 0,
+				   hp->transport_status, hp->driver_status,
+				   (unsigned char *)hp->response,
+				   hp->response_len);
+}
+
+static int scsi_dump_sense(struct scsi_id_device *dev_scsi,
+			   unsigned char *sense_buffer, int sb_len)
 {
-	unsigned char *sense_buffer;
 	int s;
-	int sb_len;
 	int code;
 	int sense_class;
 	int sense_key;
@@ -177,13 +186,11 @@ static int scsi_dump_sense(struct scsi_id_device *dev_scsi, struct sg_io_hdr *io
 
 	dbg("got check condition\n");
 
-	sb_len = io->sb_len_wr;
 	if (sb_len < 1) {
 		info("%s: sense buffer empty\n", dev_scsi->kernel);
 		return -1;
 	}
 
-	sense_buffer = io->sbp;
 	sense_class = (sense_buffer[0] >> 4) & 0x07;
 	code = sense_buffer[0] & 0xf;
 
@@ -268,7 +275,28 @@ static int scsi_dump(struct scsi_id_device *dev_scsi, struct sg_io_hdr *io)
 	info("%s: sg_io failed status 0x%x 0x%x 0x%x 0x%x\n",
 	    dev_scsi->kernel, io->driver_status, io->host_status, io->msg_status, io->status);
 	if (io->status == SCSI_CHECK_CONDITION)
-		return scsi_dump_sense(dev_scsi, io);
+		return scsi_dump_sense(dev_scsi, io->sbp, io->sb_len_wr);
+	else
+		return -1;
+}
+
+static int scsi_dump_v4(struct scsi_id_device *dev_scsi, struct sg_io_v4 *io)
+{
+	if (!io->device_status && !io->transport_status &&
+	    !io->driver_status) {
+		/*
+		 * Impossible, should not be called.
+		 */
+		info("%s: called with no error\n", __FUNCTION__);
+		return -1;
+	}
+
+	info("%s: sg_io failed status 0x%x 0x%x 0x%x\n",
+	    dev_scsi->kernel, io->driver_status, io->transport_status,
+	     io->device_status);
+	if (io->device_status == SCSI_CHECK_CONDITION)
+		return scsi_dump_sense(dev_scsi, (unsigned char *)io->response,
+				       io->response_len);
 	else
 		return -1;
 }
@@ -281,6 +309,8 @@ static int scsi_inquiry(struct scsi_id_device *dev_scsi, int fd,
 		{ INQUIRY_CMD, evpd, page, 0, buflen, 0 };
 	unsigned char sense[SENSE_BUFF_LEN];
 	struct sg_io_hdr io_hdr;
+	struct sg_io_v4 io_v4;
+	void *io_buf;
 	int retval;
 	int retry = 3; /* rather random */
 
@@ -292,24 +322,46 @@ static int scsi_inquiry(struct scsi_id_device *dev_scsi, int fd,
 resend:
 	dbg("%s evpd %d, page 0x%x\n", dev_scsi->kernel, evpd, page);
 
-	memset(&io_hdr, 0, sizeof(struct sg_io_hdr));
-	io_hdr.interface_id = 'S';
-	io_hdr.cmd_len = sizeof(inq_cmd);
-	io_hdr.mx_sb_len = sizeof(sense);
-	io_hdr.dxfer_direction = SG_DXFER_FROM_DEV;
-	io_hdr.dxfer_len = buflen;
-	io_hdr.dxferp = buf;
-	io_hdr.cmdp = inq_cmd;
-	io_hdr.sbp = sense;
-	io_hdr.timeout = DEF_TIMEOUT;
-
-	if (ioctl(fd, SG_IO, &io_hdr) < 0) {
+	if (dev_scsi->use_sg == 4) {
+		memset(&io_v4, 0, sizeof(struct sg_io_v4));
+		io_v4.guard = 'Q';
+		io_v4.protocol = BSG_PROTOCOL_SCSI;
+		io_v4.subprotocol = BSG_SUB_PROTOCOL_SCSI_CMD;
+		io_v4.request_len = sizeof(inq_cmd);
+		io_v4.request = (uintptr_t)inq_cmd;
+		io_v4.max_response_len = sizeof(sense);
+		io_v4.response = (uintptr_t)sense;
+		io_v4.din_xfer_len = buflen;
+		io_v4.din_xferp = (uintptr_t)buf;
+		io_buf = (void *)&io_v4;
+	} else {
+		memset(&io_hdr, 0, sizeof(struct sg_io_hdr));
+		io_hdr.interface_id = 'S';
+		io_hdr.cmd_len = sizeof(inq_cmd);
+		io_hdr.mx_sb_len = sizeof(sense);
+		io_hdr.dxfer_direction = SG_DXFER_FROM_DEV;
+		io_hdr.dxfer_len = buflen;
+		io_hdr.dxferp = buf;
+		io_hdr.cmdp = inq_cmd;
+		io_hdr.sbp = sense;
+		io_hdr.timeout = DEF_TIMEOUT;
+		io_buf = (void *)&io_hdr;
+	}
+
+	if (ioctl(fd, SG_IO, io_buf) < 0) {
+		if (errno == EINVAL && dev_scsi->use_sg == 4) {
+			dev_scsi->use_sg = 3;
+			goto resend;
+		}
 		info("%s: ioctl failed: %s\n", dev_scsi->kernel, strerror(errno));
 		retval = -1;
 		goto error;
 	}
 
-	retval = sg_err_category3(&io_hdr);
+	if (dev_scsi->use_sg == 4)
+		retval = sg_err_category4(io_buf);
+	else
+		retval = sg_err_category3(io_buf);
 
 	switch (retval) {
 		case SG_ERR_CAT_NOTSUPPORTED:
@@ -321,7 +373,10 @@ resend:
 			break;
 
 		default:
-			retval = scsi_dump(dev_scsi, &io_hdr);
+			if (dev_scsi->use_sg == 4)
+				retval = scsi_dump_v4(dev_scsi, io_buf);
+			else
+				retval = scsi_dump(dev_scsi, io_buf);
 	}
 
 	if (!retval) {
-- 
1.5.4.5


0006-scsi_id-update-man-page.patch:

--- NEW FILE 0006-scsi_id-update-man-page.patch ---
>From 138cf75e4eda54ab519c0d77ad3ca4b467dfe7ec Mon Sep 17 00:00:00 2001
From: Kay Sievers <kay.sievers at vrfy.org>
Date: Wed, 14 May 2008 13:59:11 +0200
Subject: [PATCH] scsi_id:  update man page

---
 extras/scsi_id/scsi_id.8 |   24 +-----------------------
 1 files changed, 1 insertions(+), 23 deletions(-)

diff --git a/extras/scsi_id/scsi_id.8 b/extras/scsi_id/scsi_id.8
index aa429a5..725b7d5 100644
--- a/extras/scsi_id/scsi_id.8
+++ b/extras/scsi_id/scsi_id.8
@@ -52,25 +52,12 @@ identifier starts with the NAA value of 6):
 
 .SH OPTIONS
 .TP
-.BI \-\-fallback-to-sysfs
-Always print information (model, vendor strings) about the device even
-if it does not support VPD pages.
-.TP
-.BI \-\-ignore-sysfs
-Ignore sysfs entries. Used for devices which are not represented as SCSI
-devices, but understand SG_IO commands.
-.TP
 .BI \-\-blacklisted
 The default behaviour \- treat the device as black listed, and do nothing
 unless a white listed device is found in the scsi_id config\-file.
 .TP
 .BI \-\-device=\| device\^
-Instead
-of determining and creating a device node based on a sysfs dev
-entry as done for the \fB\-s\fP, send SG_IO commands to 
-\fBdevice\fP, such as \fB/dev/sdc\fP.
-This argument should also be used when invoked via udev to avoid problems
-with creation of temporary files on not-yet writable directories.
+Send SG_IO commands to \fBdevice\fP, such as \fB/dev/sdc\fP.
 .TP
 .BI \-\-config=\| config\-file
 Read configuration and black/white list entries from
@@ -85,10 +72,6 @@ on the command line or in the scsi_id configuration file for
 .B scsi_id
 to generate any output.
 .TP
-.BI \-\-prefix-bus-id
-Prefix the identification string with the  driver model (sysfs) bus id of
-the SCSI device.
-.TP
 .BI \-\-page=\| 0x80 | 0x83 | pre-spc3-83
 Use SCSI INQUIRY VPD page code 0x80, 0x83, or pre-spc3-83.
 .sp
@@ -102,11 +85,6 @@ option is used for older model 4, 5, and 6 EMC Symmetrix devices, its
 use with SPC-2 or SPC-3 compliant devices will fallback to the page 83
 format supported by these devices.
 .TP
-.BI \-\-devpath=\| sysfs\-devpath
-Generate an id for the
-.B sysfs\-devpath.
-The sysfs mount point must not be included.
-.TP
 .BI \-\-replace-whitespace
 Reformat the output : replace all whitespaces by underscores.
 .TP
-- 
1.5.4.5


0007-scsi_id-remove-bus_id-option.patch:

--- NEW FILE 0007-scsi_id-remove-bus_id-option.patch ---
>From 2d05764a77078953849a1f84ac269c927904ca23 Mon Sep 17 00:00:00 2001
From: Kay Sievers <kay.sievers at vrfy.org>
Date: Wed, 14 May 2008 13:59:25 +0200
Subject: [PATCH] scsi_id: remove bus_id option

---
 extras/scsi_id/scsi_id.c |    7 -------
 1 files changed, 0 insertions(+), 7 deletions(-)

diff --git a/extras/scsi_id/scsi_id.c b/extras/scsi_id/scsi_id.c
index 0f09f29..6194b71 100644
--- a/extras/scsi_id/scsi_id.c
+++ b/extras/scsi_id/scsi_id.c
@@ -37,7 +37,6 @@ static const struct option options[] = {
 	{ "page", 1, NULL, 'p' },
 	{ "blacklisted", 0, NULL, 'b' },
 	{ "whitelisted", 0, NULL, 'g' },
-	{ "prefix-bus-id", 0, NULL, 'i' },
 	{ "replace-whitespace", 0, NULL, 'u' },
 	{ "verbose", 0, NULL, 'v' },
 	{ "version", 0, NULL, 'V' },
@@ -52,7 +51,6 @@ static const char dev_short_options[] = "bgp:";
 static int all_good;
 static int dev_specified;
 static char config_file[MAX_PATH_LEN] = SCSI_ID_CONFIG_FILE;
-static int display_bus_id;
 static enum page_code default_page_code;
 static int use_stderr;
 static int debug;
@@ -426,7 +424,6 @@ static int set_options(int argc, char **argv, const char *short_opts,
 			       "  --page                 SCSI page (0x80, 0x83, pre-spc3-83)\n"
 			       "  --blacklisted          threat device as blacklisted\n"
 			       "  --whitelisted          threat device as whitelisted\n"
-			       "  --prefix-bus-id        prefix SCSI bus id\n"
 			       "  --replace-whitespace   replace all whitespaces by underscores\n"
 			       "  --verbose              verbose logging\n"
 			       "  --version              print version\n"
@@ -434,10 +431,6 @@ static int set_options(int argc, char **argv, const char *short_opts,
 			       "  --help                 print this help text\n\n");
 			exit(0);
 
-		case 'i':
-			display_bus_id = 1;
-			break;
-
 		case 'p':
 			if (strcmp(optarg, "0x80") == 0) {
 				default_page_code = PAGE_80;
-- 
1.5.4.5


0008-scsi_id-add-sg-version-option.patch:

--- NEW FILE 0008-scsi_id-add-sg-version-option.patch ---
>From 025570aa3e054d92d65f8d2de9f91d202f60c798 Mon Sep 17 00:00:00 2001
From: Kay Sievers <kay.sievers at vrfy.org>
Date: Wed, 14 May 2008 15:02:17 +0200
Subject: [PATCH] scsi_id: add --sg-version= option

---
 extras/scsi_id/scsi_id.c     |   53 +++++++++++++++++++++++++----------------
 extras/scsi_id/scsi_serial.c |    6 +++-
 2 files changed, 36 insertions(+), 23 deletions(-)

diff --git a/extras/scsi_id/scsi_id.c b/extras/scsi_id/scsi_id.c
index 6194b71..5eb95e8 100644
--- a/extras/scsi_id/scsi_id.c
+++ b/extras/scsi_id/scsi_id.c
@@ -38,6 +38,7 @@ static const struct option options[] = {
 	{ "blacklisted", 0, NULL, 'b' },
 	{ "whitelisted", 0, NULL, 'g' },
 	{ "replace-whitespace", 0, NULL, 'u' },
+	{ "sg-version", 1, NULL, 's' },
 	{ "verbose", 0, NULL, 'v' },
 	{ "version", 0, NULL, 'V' },
 	{ "export", 0, NULL, 'x' },
@@ -52,6 +53,7 @@ static int all_good;
 static int dev_specified;
 static char config_file[MAX_PATH_LEN] = SCSI_ID_CONFIG_FILE;
 static enum page_code default_page_code;
+static int sg_version = 4;
 static int use_stderr;
 static int debug;
 static int reformat_serial;
@@ -257,7 +259,7 @@ static int get_file_options(const char *vendor, const char *model,
 			break;
 		lineno++;
 		if (buf[strlen(buffer) - 1] != '\n') {
-			info("Config file line %d too long\n", lineno);
+			err("Config file line %d too long\n", lineno);
 			break;
 		}
 
@@ -309,7 +311,7 @@ static int get_file_options(const char *vendor, const char *model,
 		 * Only allow: [vendor=foo[,model=bar]]options=stuff
 		 */
 		if (!options_in || (!vendor_in && model_in)) {
-			info("Error parsing config file line %d '%s'\n", lineno, buffer);
+			err("Error parsing config file line %d '%s'\n", lineno, buffer);
 			retval = -1;
 			break;
 		}
@@ -419,16 +421,17 @@ static int set_options(int argc, char **argv, const char *short_opts,
 
 		case 'h':
 			printf("Usage: scsi_id OPTIONS <device>\n"
-			       "  --device               device node for SG_IO commands\n"
-			       "  --config               location of config file\n"
-			       "  --page                 SCSI page (0x80, 0x83, pre-spc3-83)\n"
-			       "  --blacklisted          threat device as blacklisted\n"
-			       "  --whitelisted          threat device as whitelisted\n"
-			       "  --replace-whitespace   replace all whitespaces by underscores\n"
-			       "  --verbose              verbose logging\n"
-			       "  --version              print version\n"
-			       "  --export               print values as environment keys\n"
-			       "  --help                 print this help text\n\n");
+			       "  --device=                     device node for SG_IO commands\n"
+			       "  --config=                     location of config file\n"
+			       "  --page=0x80|0x83|pre-spc3-83  SCSI page (0x80, 0x83, pre-spc3-83)\n"
+			       "  --sg-version=3|4              use SGv3 or SGv4\n"
+			       "  --blacklisted                 threat device as blacklisted\n"
+			       "  --whitelisted                 threat device as whitelisted\n"
+			       "  --replace-whitespace          replace all whitespaces by underscores\n"
+			       "  --verbose                     verbose logging\n"
+			       "  --version                     print version\n"
+			       "  --export                      print values as environment keys\n"
+			       "  --help                        print this help text\n\n");
 			exit(0);
 
 		case 'p':
@@ -439,7 +442,15 @@ static int set_options(int argc, char **argv, const char *short_opts,
 			} else if (strcmp(optarg, "pre-spc3-83") == 0) {
 				default_page_code = PAGE_83_PRE_SPC3; 
 			} else {
-				info("Unknown page code '%s'\n", optarg);
+				err("Unknown page code '%s'\n", optarg);
+				return -1;
+			}
+			break;
+
+		case 's':
+			sg_version = atoi(optarg);
+			if (sg_version < 3 || sg_version > 4) {
+				err("Unknown SG version '%s'\n", optarg);
 				return -1;
 			}
 			break;
@@ -513,13 +524,13 @@ static int per_dev_options(struct scsi_id_device *dev_scsi, int *good_bad, int *
 			} else if (strcmp(optarg, "pre-spc3-83") == 0) {
 				*page_code = PAGE_83_PRE_SPC3; 
 			} else {
-				info("Unknown page code '%s'\n", optarg);
+				err("Unknown page code '%s'\n", optarg);
 				retval = -1;
 			}
 			break;
 
 		default:
-			info("Unknown or bad option '%c' (0x%x)\n", option, option);
+			err("Unknown or bad option '%c' (0x%x)\n", option, option);
 			retval = -1;
 			break;
 		}
@@ -536,16 +547,16 @@ static int set_inq_values(struct scsi_id_device *dev_scsi, const char *path)
 {
 	int retval;
 
-	dev_scsi->use_sg = 4;
+	dev_scsi->use_sg = sg_version;
 
 	retval = scsi_std_inquiry(dev_scsi, path);
 	if (retval)
 	    return retval;
 
-	set_str(vendor_str, dev_scsi->vendor, 8);
-	set_str(model_str, dev_scsi->model, 16);
-	set_type(type_str, dev_scsi->type, sizeof(type_str) - 1);
-	set_str(revision_str, dev_scsi->revision, sizeof(revision_str) -1);
+	set_str(vendor_str, dev_scsi->vendor, sizeof(vendor_str));
+	set_str(model_str, dev_scsi->model, sizeof(model_str));
+	set_type(type_str, dev_scsi->type, sizeof(type_str));
+	set_str(revision_str, dev_scsi->revision, sizeof(revision_str));
 
 	return 0;
 }
@@ -662,7 +673,7 @@ int main(int argc, char **argv)
 		exit(1);
 
 	if (!dev_specified) {
-		info("no device specified\n");
+		err("no device specified\n");
 		retval = 1;
 		goto exit;
 	}
diff --git a/extras/scsi_id/scsi_serial.c b/extras/scsi_id/scsi_serial.c
index 202ffc0..c5cacfa 100644
--- a/extras/scsi_id/scsi_serial.c
+++ b/extras/scsi_id/scsi_serial.c
@@ -803,12 +803,14 @@ int scsi_std_inquiry(struct scsi_id_device *dev_scsi, const char *devname)
 		return retval;
 
 	memcpy(dev_scsi->vendor, buf + 8, 8);
+	dev_scsi->vendor[8] = '\0';
 	memcpy(dev_scsi->model, buf + 16, 16);
+	dev_scsi->model[16] = '\0';
 	memcpy(dev_scsi->revision, buf + 32, 4);
+	dev_scsi->revision[4] = '\0';
 	sprintf(dev_scsi->type,"%x", buf[0] & 0x1f);
 
-	if (close(fd) < 0)
-		info("%s: close failed: %s\n", dev_scsi->kernel, strerror(errno));
+	close(fd);
 
 	return 0;
 }
-- 
1.5.4.5


0009-rules-adapt-to-new-scsi_id.patch:

--- NEW FILE 0009-rules-adapt-to-new-scsi_id.patch ---
>From 3d2aed9e869dc8abadb6f7919dcf9e35837d6181 Mon Sep 17 00:00:00 2001
From: Kay Sievers <kay.sievers at vrfy.org>
Date: Wed, 14 May 2008 15:14:23 +0200
Subject: [PATCH] rules: adapt to new scsi_id

---
 etc/udev/rules.d/60-persistent-storage.rules |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/etc/udev/rules.d/60-persistent-storage.rules b/etc/udev/rules.d/60-persistent-storage.rules
index 85a9270..b7c4337 100644
--- a/etc/udev/rules.d/60-persistent-storage.rules
+++ b/etc/udev/rules.d/60-persistent-storage.rules
@@ -33,8 +33,8 @@ KERNEL=="hd*[0-9]", ENV{ID_SERIAL}=="?*", SYMLINK+="disk/by-id/ata-$env{ID_MODEL
 
 KERNEL=="sd*[!0-9]|sr*", ATTRS{ieee1394_id}=="?*", ENV{ID_SERIAL}="$attr{ieee1394_id}", ENV{ID_BUS}="ieee1394"
 KERNEL=="sd*[!0-9]|sr*", ENV{ID_SERIAL}!="?*", SUBSYSTEMS=="usb", IMPORT{program}="usb_id --export %p"
-KERNEL=="sd*[!0-9]|sr*", ENV{ID_SERIAL}!="?*", IMPORT{program}="scsi_id --export --whitelisted --fallback-to-sysfs -s %p -d $tempnode"
-KERNEL=="cciss?c[0-9]d[0-9]", ENV{ID_SERIAL}!="?*", IMPORT{program}="scsi_id --export --whitelisted --ignore-sysfs -s %p -d $tempnode", ENV{ID_BUS}="cciss"
+KERNEL=="sd*[!0-9]|sr*", ENV{ID_SERIAL}!="?*", IMPORT{program}="scsi_id --export --whitelisted -d $tempnode", ENV{ID_BUS}="scsi"
+KERNEL=="cciss?c[0-9]d[0-9]", ENV{ID_SERIAL}!="?*", IMPORT{program}="scsi_id --export --whitelisted -d $tempnode", ENV{ID_BUS}="cciss"
 KERNEL=="sd*[!0-9]|sr*|cciss?c[0-9]d[0-9]", ENV{ID_SERIAL}=="?*", SYMLINK+="disk/by-id/$env{ID_BUS}-$env{ID_SERIAL}"
 KERNEL=="sd*[0-9]|cciss*p[0-9]", ENV{ID_SERIAL}=="?*", SYMLINK+="disk/by-id/$env{ID_BUS}-$env{ID_SERIAL}-part%n"
 
-- 
1.5.4.5


0010-rules-adapt-tape-rules-to-new-scsi_id.patch:

--- NEW FILE 0010-rules-adapt-tape-rules-to-new-scsi_id.patch ---
>From 788096cb59a7ad1cdd08ccc59e5e3b1d2f4828c2 Mon Sep 17 00:00:00 2001
From: Kay Sievers <kay.sievers at vrfy.org>
Date: Wed, 14 May 2008 15:17:35 +0200
Subject: [PATCH] rules: adapt tape rules to new scsi_id

---
 etc/udev/rules.d/60-persistent-storage-tape.rules |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/etc/udev/rules.d/60-persistent-storage-tape.rules b/etc/udev/rules.d/60-persistent-storage-tape.rules
index e56d57a..45cac93 100644
--- a/etc/udev/rules.d/60-persistent-storage-tape.rules
+++ b/etc/udev/rules.d/60-persistent-storage-tape.rules
@@ -5,14 +5,14 @@
 ACTION!="add|change", GOTO="persistent_storage_tape_end"
 
 # type 8 devices are "Medium Changers"
-KERNEL=="sg[0-9]*", SUBSYSTEMS=="scsi", ATTRS{type}=="8", IMPORT{program}="scsi_id --export --whitelisted --fallback-to-sysfs -s %p -d $tempnode", SYMLINK+="tape/by-id/$env{ID_BUS}-$env{ID_SERIAL}"
+KERNEL=="sg[0-9]*", SUBSYSTEMS=="scsi", ATTRS{type}=="8", IMPORT{program}="scsi_id --export --whitelisted -d $tempnode", SYMLINK+="tape/by-id/scsi-$env{ID_SERIAL}"
 
 SUBSYSTEM!="scsi_tape", GOTO="persistent_storage_tape_end"
 
 KERNEL=="st*[0-9]", ATTRS{ieee1394_id}=="?*", ENV{ID_SERIAL}="$attr{ieee1394_id}", ENV{ID_BUS}="ieee1394"
 KERNEL=="st*[0-9]", ENV{ID_SERIAL}!="?*", SUBSYSTEMS=="usb", IMPORT{program}="usb_id --export %p"
 
-KERNEL=="st*[0-9]|nst*[0-9]",  ENV{ID_SERIAL}!="?*", IMPORT{program}="scsi_id --export --whitelisted --fallback-to-sysfs -s %p -d $tempnode"
+KERNEL=="st*[0-9]|nst*[0-9]",  ENV{ID_SERIAL}!="?*", IMPORT{program}="scsi_id --export --whitelisted -d $tempnode", ENV{ID_BUS}="scsi"
 KERNEL=="st*[0-9]",  ENV{ID_SERIAL}=="?*", SYMLINK+="tape/by-id/$env{ID_BUS}-$env{ID_SERIAL}"
 KERNEL=="nst*[0-9]", ENV{ID_SERIAL}=="?*", SYMLINK+="tape/by-id/$env{ID_BUS}-$env{ID_SERIAL}-nst"
 
-- 
1.5.4.5


0011-cdrom_id-fix-segfault.patch:

--- NEW FILE 0011-cdrom_id-fix-segfault.patch ---
>From 4cd71da5603898cff68a31774be570750d7fd659 Mon Sep 17 00:00:00 2001
From: Matthias Schwarzott <zzam at gentoo.org>
Date: Wed, 14 May 2008 16:03:49 +0200
Subject: [PATCH] cdrom_id: fix segfault

---
 extras/cdrom_id/cdrom_id.c |    2 ++
 1 files changed, 2 insertions(+), 0 deletions(-)

diff --git a/extras/cdrom_id/cdrom_id.c b/extras/cdrom_id/cdrom_id.c
index 0e0a463..e0cbe9e 100644
--- a/extras/cdrom_id/cdrom_id.c
+++ b/extras/cdrom_id/cdrom_id.c
@@ -469,6 +469,8 @@ static int cd_media_toc(int fd)
 	info("READ TOC: len: %d\n", len);
 	if (len > sizeof(toc))
 		return -1;
+	if (len < 8)
+		return -1;
 
 	/* check if we have a data track */
 	info("ctl %02x (0x04 is data/audio)\n", header[5]);
-- 
1.5.4.5


udev-120-rhrules.patch:

--- NEW FILE udev-120-rhrules.patch ---
diff -up udev-121/etc/udev/redhat/40-redhat.rules.rhrules udev-121/etc/udev/redhat/40-redhat.rules
--- udev-121/etc/udev/redhat/40-redhat.rules.rhrules	2008-05-09 09:22:23.000000000 +0200
+++ udev-121/etc/udev/redhat/40-redhat.rules	2008-05-16 11:58:39.000000000 +0200
@@ -23,3 +23,6 @@ KERNEL=="vcs[0-9]*",           OWNER="vc
 KERNEL=="vcsa",                OWNER="vcsa", GROUP="tty"
 KERNEL=="vcsa[0-9]*",          OWNER="vcsa", GROUP="tty"
 KERNEL=="vcc/*",               OWNER="vcsa", GROUP="tty"
+
+KERNEL=="event*", ATTRS{idVendor}=="03f0", ATTRS{interface}=="Virtual Mouse", ATTRS{bInterfaceProtocol}=="02", SYMLINK+="input/hp_ilo_mouse"
+

udev-121-bsg.patch:

--- NEW FILE udev-121-bsg.patch ---
diff -up udev-121/extras/scsi_id/bsg.h.bsg udev-121/extras/scsi_id/bsg.h
--- udev-121/extras/scsi_id/bsg.h.bsg	2008-05-16 12:04:38.000000000 +0200
+++ udev-121/extras/scsi_id/bsg.h	2008-05-16 12:04:28.000000000 +0200
@@ -0,0 +1,78 @@
+#ifndef BSG_H
+#define BSG_H
+
+#define BSG_PROTOCOL_SCSI		0
+
+#define BSG_SUB_PROTOCOL_SCSI_CMD	0
+#define BSG_SUB_PROTOCOL_SCSI_TMF	1
+#define BSG_SUB_PROTOCOL_SCSI_TRANSPORT	2
+
+struct sg_io_v4 {
+	__s32 guard;		/* [i] 'Q' to differentiate from v3 */
+	__u32 protocol;		/* [i] 0 -> SCSI , .... */
+	__u32 subprotocol;	/* [i] 0 -> SCSI command, 1 -> SCSI task
+				   management function, .... */
+
+	__u32 request_len;	/* [i] in bytes */
+	__u64 request;		/* [i], [*i] {SCSI: cdb} */
+	__u64 request_tag;	/* [i] {SCSI: task tag (only if flagged)} */
+	__u32 request_attr;	/* [i] {SCSI: task attribute} */
+	__u32 request_priority;	/* [i] {SCSI: task priority} */
+	__u32 request_extra;	/* [i] {spare, for padding} */
+	__u32 max_response_len;	/* [i] in bytes */
+	__u64 response;		/* [i], [*o] {SCSI: (auto)sense data} */
+
+        /* "dout_": data out (to device); "din_": data in (from device) */
+	__u32 dout_iovec_count;	/* [i] 0 -> "flat" dout transfer else
+				   dout_xfer points to array of iovec */
+	__u32 dout_xfer_len;	/* [i] bytes to be transferred to device */
+	__u32 din_iovec_count;	/* [i] 0 -> "flat" din transfer */
+	__u32 din_xfer_len;	/* [i] bytes to be transferred from device */
+	__u64 dout_xferp;	/* [i], [*i] */
+	__u64 din_xferp;	/* [i], [*o] */
+
+	__u32 timeout;		/* [i] units: millisecond */
+	__u32 flags;		/* [i] bit mask */
+	__u64 usr_ptr;		/* [i->o] unused internally */
+	__u32 spare_in;		/* [i] */
+
+	__u32 driver_status;	/* [o] 0 -> ok */
+	__u32 transport_status;	/* [o] 0 -> ok */
+	__u32 device_status;	/* [o] {SCSI: command completion status} */
+	__u32 retry_delay;	/* [o] {SCSI: status auxiliary information} */
+	__u32 info;		/* [o] additional information */
+	__u32 duration;		/* [o] time to complete, in milliseconds */
+	__u32 response_len;	/* [o] bytes of response actually written */
+	__s32 din_resid;	/* [o] din_xfer_len - actual_din_xfer_len */
+	__s32 dout_resid;	/* [o] dout_xfer_len - actual_dout_xfer_len */
+	__u64 generated_tag;	/* [o] {SCSI: transport generated task tag} */
+	__u32 spare_out;	/* [o] */
+
+	__u32 padding;
+};
+
+#ifdef __KERNEL__
+
+#if defined(CONFIG_BLK_DEV_BSG)
+struct bsg_class_device {
+	struct class_device *class_dev;
+	struct device *dev;
+	int minor;
+	struct request_queue *queue;
+};
+
+extern int bsg_register_queue(struct request_queue *, struct device *, const char *);
+extern void bsg_unregister_queue(struct request_queue *);
+#else
+static inline int bsg_register_queue(struct request_queue * rq, struct device *dev, const char *name)
+{
+	return 0;
+}
+static inline void bsg_unregister_queue(struct request_queue *rq)
+{
+}
+#endif
+
+#endif /* __KERNEL__ */
+
+#endif


Index: .cvsignore
===================================================================
RCS file: /cvs/pkgs/rpms/udev/devel/.cvsignore,v
retrieving revision 1.48
retrieving revision 1.49
diff -u -r1.48 -r1.49
--- .cvsignore	4 Apr 2008 13:35:38 -0000	1.48
+++ .cvsignore	16 May 2008 10:11:19 -0000	1.49
@@ -1 +1 @@
-udev-120.tar.bz2
+udev-121.tar.bz2


Index: sources
===================================================================
RCS file: /cvs/pkgs/rpms/udev/devel/sources,v
retrieving revision 1.48
retrieving revision 1.49
diff -u -r1.48 -r1.49
--- sources	4 Apr 2008 13:35:38 -0000	1.48
+++ sources	16 May 2008 10:11:19 -0000	1.49
@@ -1 +1 @@
-71d10400458de14f6e46f52a1a591532  udev-120.tar.bz2
+abd3833ba457cdc0cb5163a8bb7ca5d9  udev-121.tar.bz2


Index: udev.spec
===================================================================
RCS file: /cvs/pkgs/rpms/udev/devel/udev.spec,v
retrieving revision 1.244
retrieving revision 1.245
diff -u -r1.244 -r1.245
--- udev.spec	23 Apr 2008 15:45:38 -0000	1.244
+++ udev.spec	16 May 2008 10:11:19 -0000	1.245
@@ -5,8 +5,8 @@
 
 Summary: A userspace implementation of devfs
 Name: udev
-Version: 120
-Release: 5.20080421git%{?dist}
+Version: 121
+Release: 1.20080516git%{?dist}
 License: GPLv2
 Group: System Environment/Base
 Provides: udev-persistent = %{version}-%{release}
@@ -19,26 +19,26 @@
 Source4: fw_unit_symlinks.sh
 Source5: udev.sysconfig
 
-Patch1: 0001-writing-udev-rules-fix-rule-typos.patch
-Patch2: 0002-udevinfo-do-not-replace-chars-when-printing-ATTR.patch
-Patch3: 0003-vol_id-add-offset-option.patch
-Patch4: 0004-cdrom_id-replace-with-version-which-also-exports-me.patch
-Patch5: 0005-udevd-at-startup-write-message-including-version-nu.patch
-Patch6: 0006-rules_generator-net-rules-always-add-KERNEL-mat.patch
-Patch7: 0007-selinux-more-context-settings.patch
-Patch8: 0008-selinux-fix-missing-includes.patch
-Patch9: 0009-allow-setting-of-MODE-0000.patch
-Patch10: 0010-path_id-remove-subsystem-whitelist.patch
-Patch11: 0011-logging-add-trailing-newline-to-all-strings.patch
-Patch12: 0012-scsi_id-initialize-serial-strings.patch
-Patch13: 0013-persistent-device-naming-also-read-unpartitioned-me.patch
-
+Patch1: 0001-volume_id-clean-up-linux_raid-code.patch
+Patch2: 0002-man-udevd-fix-udev-8-reference.patch
+Patch3: 0003-man-scsi_id.patch
+Patch4: 0004-scsi_id-remove-all-sysfs-dependencies.patch
+Patch5: 0005-scsi_id-add-SGv4-support.patch
+Patch6: 0006-scsi_id-update-man-page.patch
+Patch7: 0007-scsi_id-remove-bus_id-option.patch
+Patch8: 0008-scsi_id-add-sg-version-option.patch
+Patch9: 0009-rules-adapt-to-new-scsi_id.patch
+Patch10: 0010-rules-adapt-tape-rules-to-new-scsi_id.patch
+Patch11: 0011-cdrom_id-fix-segfault.patch
+Patch12: udev-121-bsg.patch
 
 Patch101: udev-116-nettype.patch
 Patch102: udev-118-sysconf.patch
 Patch103: udev-089-nopie.patch
 Patch104: udev-091-lib64.patch
 
+Patch200: udev-120-rhrules.patch
+
 ExclusiveOS: Linux
 URL: http://www.kernel.org/pub/linux/utils/kernel/hotplug/udev.html
 BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
@@ -99,8 +99,7 @@
 %patch9 -p1 -b .git9
 %patch10 -p1 -b .git10
 %patch11 -p1 -b .git11
-%patch12 -p1 -b .git12
-%patch13 -p1 -b .git13
+%patch12 -p1 -b .bsg
 
 %patch101 -p1 -b .nettype
 %patch102 -p1 -b .sysconf
@@ -108,6 +107,8 @@
 %patch103 -p1 -b .nopie
 %patch104 -p1 -b .lib64
 
+%patch200 -p1 -b .rhrules
+
 %build
 
 %if %{with_static}
@@ -422,6 +423,12 @@
 %{_libdir}/pkgconfig/libvolume_id.pc 
 
 %changelog
+* Fri May 16 2008 Harald Hoyer <harald at redhat.com> 121-1.20080516git
+- version 121 + latest git fixes
+
+* Thu Apr 24 2008 Harald Hoyer <harald at redhat.com> 120-6.20080421git
+- added input/hp_ilo_mouse symlink
+
 * Mon Apr 21 2008 Harald Hoyer <harald at redhat.com> 120-4.20080421git
 - added patches from git:
 - persistent device naming: also read unpartitioned media


--- 0001-writing-udev-rules-fix-rule-typos.patch DELETED ---


--- 0002-udevinfo-do-not-replace-chars-when-printing-ATTR.patch DELETED ---


--- 0003-vol_id-add-offset-option.patch DELETED ---


--- 0004-cdrom_id-replace-with-version-which-also-exports-me.patch DELETED ---


--- 0005-udevd-at-startup-write-message-including-version-nu.patch DELETED ---


--- 0006-rules_generator-net-rules-always-add-KERNEL-mat.patch DELETED ---


--- 0007-selinux-more-context-settings.patch DELETED ---


--- 0008-selinux-fix-missing-includes.patch DELETED ---


--- 0009-allow-setting-of-MODE-0000.patch DELETED ---


--- 0010-path_id-remove-subsystem-whitelist.patch DELETED ---


--- 0011-logging-add-trailing-newline-to-all-strings.patch DELETED ---


--- 0012-scsi_id-initialize-serial-strings.patch DELETED ---


--- 0013-persistent-device-naming-also-read-unpartitioned-me.patch DELETED ---




More information about the fedora-extras-commits mailing list