Skip site navigation (1)Skip section navigation (2)
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>