commit udev for openSUSE:Factory
Hello community, here is the log from the commit of package udev for openSUSE:Factory checked in at 2012-08-04 22:25:07 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/udev (Old) and /work/SRC/openSUSE:Factory/.udev.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Package is "udev", Maintainer is "RMilasan@suse.com" Changes: -------- --- /work/SRC/openSUSE:Factory/udev/udev.changes 2012-07-25 16:21:12.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.udev.new/udev.changes 2012-08-05 00:08:47.000000000 +0200 @@ -1,0 +2,14 @@ +Fri Aug 3 10:19:12 UTC 2012 - rmilasan@suse.com + +- Simplify function open_queue_file. + add: 0024-libudev-queue.c-simplified-open_queue_file.patch + +------------------------------------------------------------------- +Thu Aug 2 11:44:09 UTC 2012 - rmilasan@suse.com + +- Rework 0013-re-enable-by_path-links-for-ata-devices.patch to handle + by-path links similar to the scsi devices. + Fix rules timestamp race (bnc#772075) + add: 0023-udev-fix-rules-timestamp-race.patch + +------------------------------------------------------------------- New: ---- 0023-udev-fix-rules-timestamp-race.patch 0024-libudev-queue.c-simplified-open_queue_file.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ udev.spec ++++++ --- /var/tmp/diff_new_pack.5897El/_old 2012-08-05 00:09:33.000000000 +0200 +++ /var/tmp/diff_new_pack.5897El/_new 2012-08-05 00:09:33.000000000 +0200 @@ -96,6 +96,10 @@ Patch21: 0021-keymap-Add-Dell-Latitude-force-release-quirk.patch # PATCH-FIX-UPSTREAM 0022-keymap-Broaden-ThinkPad-X2.-tablet-match-to-also-app.patch Patch22: 0022-keymap-Broaden-ThinkPad-X2.-tablet-match-to-also-app.patch +# PATCH-FIX-OPENSUSE 0023-udev-fix-rules-timestamp-race.patch +Patch23: 0023-udev-fix-rules-timestamp-race.patch +# PATCH-FIX-UPSTREAM 0024-libudev-queue.c-simplified-open_queue_file.patch +Patch24: 0024-libudev-queue.c-simplified-open_queue_file.patch # Upstream First - Policy: # Never add any patches to this package without the upstream commit id @@ -187,6 +191,8 @@ %patch20 -p1 %patch21 -p1 %patch22 -p1 +%patch23 -p1 +%patch24 -p1 %build autoreconf -vfi ++++++ 0013-re-enable-by_path-links-for-ata-devices.patch ++++++ --- /var/tmp/diff_new_pack.5897El/_old 2012-08-05 00:09:33.000000000 +0200 +++ /var/tmp/diff_new_pack.5897El/_new 2012-08-05 00:09:33.000000000 +0200 @@ -2,7 +2,7 @@ =================================================================== --- udev-182.orig/src/udev-builtin-path_id.c +++ udev-182/src/udev-builtin-path_id.c -@@ -286,6 +286,26 @@ out: +@@ -286,6 +286,85 @@ out: return hostdev; } @@ -11,40 +11,95 @@ + struct udev_device *hostdev; + int host, bus, target, lun; + const char *name; ++ char *base; ++ char *pos; ++ DIR *dir; ++ struct dirent *dent; ++ int basenum, len; + + hostdev = udev_device_get_parent_with_subsystem_devtype(parent, "scsi", "scsi_host"); -+ + if (hostdev == NULL) + return NULL; + + name = udev_device_get_sysname(parent); -+ + if (sscanf(name, "%d:%d:%d:%d", &host, &bus, &target, &lun) != 4) + return NULL; + ++ /* rebase ata offset to get the local relative number */ ++ basenum = -1; ++ base = strdup(udev_device_get_syspath(hostdev)); ++ if (base == NULL) ++ return NULL; ++ pos = strrchr(base, '/'); ++ if (pos == NULL) { ++ parent = NULL; ++ goto out; ++ } ++ pos[0] = '\0'; ++ len = strlen(base) - 5; ++ if (len <= 0) { ++ parent = NULL; ++ goto out; ++ } ++ base[len] = '\0'; ++ dir = opendir(base); ++ if (dir == NULL) { ++ parent = NULL; ++ goto out; ++ } ++ for (dent = readdir(dir); dent != NULL; dent = readdir(dir)) { ++ char *rest; ++ int i; ++ ++ if (dent->d_name[0] == '.') ++ continue; ++ if (dent->d_type != DT_DIR && dent->d_type != DT_LNK) ++ continue; ++ if (strncmp(dent->d_name, "ata", 3) != 0) ++ continue; ++ i = strtoul(&dent->d_name[3], &rest, 10); ++ ++ /* ata devices start with 1, so decrease by 1 if i is bigger then 0 */ ++ if (i > 0) ++ i--; ++ if (rest[0] != '\0') ++ continue; ++ /* ++ * find the smallest number; the host really needs to export its ++ * own instance number per parent device; relying on the global host ++ * enumeration and plainly rebasing the numbers sounds unreliable ++ */ ++ if (basenum == -1 || i < basenum) ++ basenum = i; ++ } ++ closedir(dir); ++ if (basenum == -1) { ++ parent = NULL; ++ goto out; ++ } ++ host -= basenum; ++ + path_prepend(path, "scsi-%u:%u:%u:%u", host, bus, target, lun); -+ return parent; ++out: ++ free(base); ++ return hostdev; +} + static struct udev_device *handle_scsi(struct udev_device *parent, char **path) { const char *devtype; -@@ -323,15 +343,14 @@ static struct udev_device *handle_scsi(s +@@ -322,16 +401,8 @@ static struct udev_device *handle_scsi(s + goto out; } - /* +- /* - * We do not support the ATA transport class, it creates duplicated link - * names as the fake SCSI host adapters are all separated, they are all - * re-based as host == 0. ATA should just stop faking two duplicated - * hierarchies for a single topology and leave the SCSI stuff alone; - * until that happens, there are no by-path/ links for ATA devices behind - * an ATA transport class. -+ * Ugly way to make by-path links for ata devices. -+ * Using the handle_scsi_default function make all host -+ * equal to 0 which is a problem. -+ * - */ -+ +- */ if (strstr(name, "/ata") != NULL) { - parent = NULL; + parent = handle_ata(parent, path); ++++++ 0019-udev-path_id-export-path-for-platform-block-devices.patch ++++++ --- /var/tmp/diff_new_pack.5897El/_old 2012-08-05 00:09:33.000000000 +0200 +++ /var/tmp/diff_new_pack.5897El/_new 2012-08-05 00:09:33.000000000 +0200 @@ -19,7 +19,7 @@ =================================================================== --- udev-182.orig/src/udev-builtin-path_id.c +++ udev-182/src/udev-builtin-path_id.c -@@ -477,6 +477,7 @@ static int builtin_path_id(struct udev_d +@@ -529,6 +529,7 @@ static int builtin_path_id(struct udev_d } else if (strcmp(subsys, "platform") == 0) { path_prepend(&path, "platform-%s", udev_device_get_sysname(parent)); parent = skip_subsystem(parent, "platform"); ++++++ 0023-udev-fix-rules-timestamp-race.patch ++++++ --- udev-182.orig/src/udev-rules.c.orig 2012-08-01 14:23:16.000000000 +0000 +++ udev-182/src/udev-rules.c 2012-08-01 14:26:48.000000000 +0000 @@ -1754,6 +1754,7 @@ struct udev_rules *udev_rules_new(struct struct udev_list_entry *file_loop; struct token end_token; char **s; + unsigned long long *stamp_usec; rules = calloc(1, sizeof(struct udev_rules)); if (rules == NULL) @@ -1795,8 +1796,12 @@ struct udev_rules *udev_rules_new(struct memset(rules->trie_nodes, 0x00, sizeof(struct trie_node)); rules->trie_nodes_cur = 1; - for (udev_get_rules_path(udev, &s, NULL); *s != NULL; s++) + for (udev_get_rules_path(udev, &s, &stamp_usec); *s != NULL; s++, stamp_usec++) { + struct stat stats; + if (stat(*s, &stats) == 0) + *stamp_usec = ts_usec(&stats.st_mtim); add_matching_files(udev, &file_list, *s, ".rules"); + } /* add all filenames to the string buffer */ udev_list_entry_foreach(file_loop, udev_list_get_entry(&file_list)) { ++++++ 0024-libudev-queue.c-simplified-open_queue_file.patch ++++++
From a267bebf464cbb339d3411370f2e984dfc063567 Mon Sep 17 00:00:00 2001 From: Arvydas Sidorenko <asido4@gmail.com> Date: Tue, 31 Jul 2012 11:38:08 +0200 Subject: [PATCH] libudev-queue.c: simplified open_queue_file
There is no apparent justification for using util_strscpyl on the filename since it's a plain hardcoded path. Older versions used: util_strscpyl(filename, sizeof(filename), SOME_DIR, "/queue.bin", NULL); and when changed nobody bothered to simplify it. Index: udev-182/src/libudev-queue.c =================================================================== --- udev-182.orig/src/libudev-queue.c +++ udev-182/src/libudev-queue.c @@ -208,11 +208,9 @@ ssize_t udev_queue_read_devpath(FILE *qu static FILE *open_queue_file(struct udev_queue *udev_queue, unsigned long long int *seqnum_start) { - char filename[UTIL_PATH_SIZE]; FILE *queue_file; - util_strscpyl(filename, sizeof(filename), udev_get_run_path(udev_queue->udev), "/queue.bin", NULL); - queue_file = fopen(filename, "re"); + queue_file = fopen("/run/udev/queue.bin", "re"); if (queue_file == NULL) return NULL; -- To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-commit+help@opensuse.org
participants (1)
-
root@hilbert.suse.de