Date: Mon, 10 Jun 2013 22:29:33 GMT From: Alberto Villa <avilla@FreeBSD.org> To: freebsd-gnats-submit@FreeBSD.org Subject: ports/179469: [patch] sysutils/hal: remove disk duplicate entries Message-ID: <201306102229.r5AMTXp2067256@oldred.freebsd.org> Resent-Message-ID: <201306102230.r5AMU0iT033861@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
>Number: 179469 >Category: ports >Synopsis: [patch] sysutils/hal: remove disk duplicate entries >Confidential: no >Severity: non-critical >Priority: low >Responsible: freebsd-ports-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: sw-bug >Submitter-Id: current-users >Arrival-Date: Mon Jun 10 22:30:00 UTC 2013 >Closed-Date: >Last-Modified: >Originator: Alberto Villa >Release: FreeBSD 10.0-CURRENT amd64 >Organization: >Environment: FreeBSD indiana.smith 10.0-CURRENT FreeBSD 10.0-CURRENT #4 r251249: Sun Jun 2 14:14:46 CEST 2013 root@indiana.smith:/usr/obj/usr/src/sys/HPDV6 amd64 >Description: Since r249508 (http://svnweb.freebsd.org/changeset/base/249508) on HEAD disk labels are duplicated to /dev/diskid/. HAL creates entries for both copies. >How-To-Repeat: Insert an USB drive and check lshal(1) for entries with the same volume-uuid. >Fix: Discard any GEOM object with device name matching "diskid/*". It appears there is no other obvious information which can be used to match the devices easily, so a string check is the quicker solution (volume-uuid would work only for some kind of entries). The patch has obviously no effect on FreeBSD 9-. Patch attached with submission follows: Index: /usr/ports/sysutils/hal/Makefile =================================================================== --- /usr/ports/sysutils/hal/Makefile (revision 320124) +++ /usr/ports/sysutils/hal/Makefile (working copy) @@ -4,7 +4,7 @@ PORTNAME= hal DISTVERSION= 0.5.14 -PORTREVISION= 20 +PORTREVISION= 21 CATEGORIES= sysutils MASTER_SITES= http://hal.freedesktop.org/releases/ Index: /usr/ports/sysutils/hal/files/patch-hald_hf-storage.c =================================================================== --- /usr/ports/sysutils/hal/files/patch-hald_hf-storage.c (revision 320124) +++ /usr/ports/sysutils/hal/files/patch-hald_hf-storage.c (working copy) @@ -1,5 +1,5 @@ ---- hald/freebsd/hf-storage.c.orig 2009-08-24 08:42:29.000000000 -0400 -+++ hald/freebsd/hf-storage.c 2011-07-20 20:52:51.000000000 -0400 +--- ./hald/freebsd/hf-storage.c.orig 2009-08-24 14:42:29.000000000 +0200 ++++ ./hald/freebsd/hf-storage.c 2013-06-10 16:22:36.080280935 +0200 @@ -30,6 +30,7 @@ #include <limits.h> #include <inttypes.h> @@ -8,7 +8,18 @@ #include <sys/param.h> #include <sys/types.h> #include <sys/disklabel.h> -@@ -418,10 +419,41 @@ hf_storage_parse_conftxt (const char *co +@@ -174,6 +175,10 @@ hf_storage_device_probe_geom (HalDevice + if (! geom_obj) + return; + ++ /* Exclude /dev/diskid/ labels as they are duplicates. */ ++ if (strncmp(geom_obj->dev, "diskid/", 7) == 0) ++ return; ++ + node = g_node_find(hf_storage_geom_tree, G_PRE_ORDER, G_TRAVERSE_ALL, + GUINT_TO_POINTER(geom_obj->hash)); + +@@ -418,10 +423,41 @@ hf_storage_parse_conftxt (const char *co continue; } @@ -50,7 +61,7 @@ geom_obj->type = -1; /* We use -1 here to denote a missing type. */ geom_obj->hash = hash; -@@ -458,6 +490,13 @@ hf_storage_parse_conftxt (const char *co +@@ -458,6 +494,13 @@ hf_storage_parse_conftxt (const char *co { g_free(geom_obj->class); geom_obj->class = g_strdup(fields[12]); @@ -64,7 +75,7 @@ } } } -@@ -589,11 +628,18 @@ hf_storage_devd_notify (const char *syst +@@ -589,11 +632,18 @@ hf_storage_devd_notify (const char *syst char *conftxt; GSList *new_disks; @@ -84,7 +95,7 @@ new_disks = hf_storage_parse_conftxt(conftxt); g_free(conftxt); -@@ -669,7 +715,7 @@ hf_storage_conftxt_timeout_cb (gpointer +@@ -669,7 +719,7 @@ hf_storage_conftxt_timeout_cb (gpointer if (hf_is_waiting) return TRUE; >Release-Note: >Audit-Trail: >Unformatted:
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201306102229.r5AMTXp2067256>