6444571 aggr_grp_t`lg_closing is not reset when aggregation deletion fails
authoryz147064
Tue, 04 Jul 2006 01:52:43 -0700
changeset 2320 9a8e70fe20f3
parent 2319 6d33ed0f6c89
child 2321 cd490d070379
6444571 aggr_grp_t`lg_closing is not reset when aggregation deletion fails
usr/src/uts/common/io/aggr/aggr_grp.c
--- a/usr/src/uts/common/io/aggr/aggr_grp.c	Mon Jul 03 09:05:01 2006 -0700
+++ b/usr/src/uts/common/io/aggr/aggr_grp.c	Tue Jul 04 01:52:43 2006 -0700
@@ -981,12 +981,14 @@
 bail:
 	rw_exit(&grp->lg_lock);
 	AGGR_LACP_UNLOCK(grp);
-	if (mac_addr_update)
-		mac_unicst_update(grp->lg_mh, grp->lg_addr);
-	if (link_state_update)
-		mac_link_update(grp->lg_mh, grp->lg_link_state);
-	if (rc == 0)
-		mac_resource_update(grp->lg_mh);
+	if (!grp->lg_closing) {
+		if (mac_addr_update)
+			mac_unicst_update(grp->lg_mh, grp->lg_addr);
+		if (link_state_update)
+			mac_link_update(grp->lg_mh, grp->lg_link_state);
+		if (rc == 0)
+			mac_resource_update(grp->lg_mh);
+	}
 	AGGR_GRP_REFRELE(grp);
 
 	return (rc);
@@ -1018,6 +1020,7 @@
 	 * fail the operation.
 	 */
 	if (mac_unregister(grp->lg_mh)) {
+		grp->lg_closing = B_FALSE;
 		rw_exit(&grp->lg_lock);
 		AGGR_LACP_UNLOCK(grp);
 		rw_exit(&aggr_grp_lock);