Bug 179469 - [patch] sysutils/hal: remove disk duplicate entries
[patch] sysutils/hal: remove disk duplicate entries
Status: Closed FIXED
Product: Ports & Packages
Classification: Unclassified
Component: Individual Port(s)
Latest
Any Any
: Normal Affects Only Me
Assigned To: Alberto Villa
:
Depends on:
Blocks:
  Show dependency treegraph
 
Reported: 2013-06-10 23:30 UTC by Alberto Villa
Modified: 2013-10-14 14:50 UTC (History)
0 users

See Also:


Attachments
file.diff (2.45 KB, patch)
2013-06-10 23:30 UTC, Alberto Villa
no flags Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Alberto Villa freebsd_committer 2013-06-10 23:30:00 UTC
Since r249508 (http://svnweb.freebsd.org/changeset/base/249508) on HEAD disk labels are duplicated to /dev/diskid/. HAL creates entries for both copies.

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:
How-To-Repeat: Insert an USB drive and check lshal(1) for entries with the same volume-uuid.
Comment 1 Edwin Groothuis freebsd_committer 2013-06-10 23:30:08 UTC
Responsible Changed
From-To: freebsd-ports-bugs->gnome

Over to maintainer (via the GNATS Auto Assign Tool)
Comment 2 Alberto Villa freebsd_committer 2013-10-14 14:41:07 UTC
Responsible Changed
From-To: gnome->avilla

Taking after maintainer timeout.
Comment 3 dfilter freebsd_committer 2013-10-14 14:42:00 UTC
Author: avilla
Date: Mon Oct 14 13:41:51 2013
New Revision: 330321
URL: http://svnweb.freebsd.org/changeset/ports/330321

Log:
  - Remove disk duplicate entries on FreeBSD 10+.
  - Bump PORTREVISION.
  
  PR:		179469
  Submitted by:	avilla (myself)
  Approved by:	gnome (maintainer timeout)

Modified:
  head/sysutils/hal/Makefile
  head/sysutils/hal/files/patch-hald_hf-storage.c   (contents, props changed)

Modified: head/sysutils/hal/Makefile
==============================================================================
--- head/sysutils/hal/Makefile	Mon Oct 14 13:40:48 2013	(r330320)
+++ head/sysutils/hal/Makefile	Mon Oct 14 13:41:51 2013	(r330321)
@@ -4,7 +4,7 @@
 
 PORTNAME=	hal
 DISTVERSION=	0.5.14
-PORTREVISION=	20
+PORTREVISION=	21
 CATEGORIES=	sysutils
 MASTER_SITES=	http://hal.freedesktop.org/releases/
 

Modified: head/sysutils/hal/files/patch-hald_hf-storage.c
==============================================================================
--- head/sysutils/hal/files/patch-hald_hf-storage.c	Mon Oct 14 13:40:48 2013	(r330320)
+++ head/sysutils/hal/files/patch-hald_hf-storage.c	Mon Oct 14 13:41:51 2013	(r330321)
@@ -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;
  
_______________________________________________
svn-ports-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-ports-all
To unsubscribe, send any mail to "svn-ports-all-unsubscribe@freebsd.org"
Comment 4 Alberto Villa freebsd_committer 2013-10-14 14:44:14 UTC
State Changed
From-To: open->closed

Patch committed.