Hello community,
here is the log from the commit of package fcoe-utils for openSUSE:Factory checked in at 2014-05-23 08:05:14
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/fcoe-utils (Old)
and /work/SRC/openSUSE:Factory/.fcoe-utils.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "fcoe-utils"
Changes:
--------
--- /work/SRC/openSUSE:Factory/fcoe-utils/fcoe-utils.changes 2014-04-23 17:28:15.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.fcoe-utils.new/fcoe-utils.changes 2014-05-23 08:05:18.000000000 +0200
@@ -1,0 +2,20 @@
+Thu May 15 09:15:54 CEST 2014 - hare@suse.de
+
+- Start fcoemon in foreground from service file (bnc#873269)
+ * Add 0030-fcoe.service-Add-foreground-to-prevent-fcoemon-to-be.patch
+- Fixup IEEE state machine
+ * Add 0031-fcoemon-Fix-IEEE-state-machine.patch
+- Fix fipvlan crash during booting (bnc#877275):
+ * Add 0032-fipvlan-Fix-crash-in-create_and_start_vlan.patch
+ * Add 0033-fipvlan-suppress-warning-interface-already-exists.patch
+ * Add 0034-fipvlan-do-not-crash-on-empty-MAC-address-in-lookup_.patch
+- Fixup warning messages during booting:
+ * Add 0035-fipvlan-fixup-return-value-on-error.patch
+ * Add 0036-fipvlan-clean-up-state-machine-for-pfd_add.patch
+
+-------------------------------------------------------------------
+Fri Apr 11 19:19:33 CEST 2014 - lchiquitto@suse.de
+
+- Remove obsolete file fcoe.config from sources
+
+-------------------------------------------------------------------
Old:
----
fcoe.config
New:
----
0030-fcoe.service-Add-foreground-to-prevent-fcoemon-to-be.patch
0031-fcoemon-Fix-IEEE-state-machine.patch
0032-fipvlan-Fix-crash-in-create_and_start_vlan.patch
0033-fipvlan-suppress-warning-interface-already-exists.patch
0034-fipvlan-do-not-crash-on-empty-MAC-address-in-lookup_.patch
0035-fipvlan-fixup-return-value-on-error.patch
0036-fipvlan-clean-up-state-machine-for-pfd_add.patch
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ fcoe-utils.spec ++++++
--- /var/tmp/diff_new_pack.1723Z1/_old 2014-05-23 08:05:19.000000000 +0200
+++ /var/tmp/diff_new_pack.1723Z1/_new 2014-05-23 08:05:19.000000000 +0200
@@ -69,6 +69,13 @@
# Patches to be upstreamed
Patch28: 0028-systemctl-cannot-start-fcoemon.socket.patch
Patch29: 0029-fcoemon-Correctly-handle-options-in-the-service-file.patch
+Patch30: 0030-fcoe.service-Add-foreground-to-prevent-fcoemon-to-be.patch
+Patch31: 0031-fcoemon-Fix-IEEE-state-machine.patch
+Patch32: 0032-fipvlan-Fix-crash-in-create_and_start_vlan.patch
+Patch33: 0033-fipvlan-suppress-warning-interface-already-exists.patch
+Patch34: 0034-fipvlan-do-not-crash-on-empty-MAC-address-in-lookup_.patch
+Patch35: 0035-fipvlan-fixup-return-value-on-error.patch
+Patch36: 0036-fipvlan-clean-up-state-machine-for-pfd_add.patch
# Patches from Fedora
Patch101: fcoe-utils-1.0.29-make.patch
@@ -110,6 +117,13 @@
%patch27 -p1
%patch28 -p1
%patch29 -p1
+%patch30 -p1
+%patch31 -p1
+%patch32 -p1
+%patch33 -p1
+%patch34 -p1
+%patch35 -p1
+%patch36 -p1
%patch101 -p1
%build
++++++ 0030-fcoe.service-Add-foreground-to-prevent-fcoemon-to-be.patch ++++++
From 1b7dc959d70679a3536ccbeb6b3a8d0905606537 Mon Sep 17 00:00:00 2001
From: Hannes Reinecke
Date: Wed, 16 Apr 2014 13:30:47 +0200
Subject: fcoe.service: Add '--foreground' to prevent fcoemon to be killed
fcoemon is running as a daemon per default, so when using
Type=simple in the service file systemd will kill the fcoemon
daemon immediately as it just sees the return code from the
first fork() call.
References: bnc#873269
Signed-off-by: Hannes Reinecke
---
etc/systemd/fcoe.service | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/etc/systemd/fcoe.service b/etc/systemd/fcoe.service
index 2e10bcd..b1d9567 100644
--- a/etc/systemd/fcoe.service
+++ b/etc/systemd/fcoe.service
@@ -6,7 +6,7 @@ After=syslog.target network.target
Type=simple
EnvironmentFile=/etc/fcoe/config
ExecStartPre=/sbin/modprobe -qa $SUPPORTED_DRIVERS
-ExecStart=/usr/sbin/fcoemon --debug=$DEBUG --syslog=$SYSLOG
+ExecStart=/usr/sbin/fcoemon --foreground --debug=$DEBUG --syslog=$SYSLOG
[Install]
WantedBy=multi-user.target
--
1.7.12.4
++++++ 0031-fcoemon-Fix-IEEE-state-machine.patch ++++++
From 95f4a92799627e791dc68eb49922f169409b5cd8 Mon Sep 17 00:00:00 2001
From: Neerav Parikh
Date: Tue, 18 Mar 2014 08:34:18 +0000
Subject: fcoemon: Fix IEEE state machine
fcoemon on adapters that support only IEEE DCBX mode
doesn't enter into a state where it can proceed
doing FIP VLAN discovery or creating an FCoE instance.
This is because the current IEEE state machine is tied
with the CEE based state machine. It relies on some
CEE specific DCB netlink calls viz. getstate() to
proceed; which may not be available on drivers that
only support IEEE specific DCBNL calls.
Hence, this patch aims to separate out the IEEE DCBX
mode specific state machine from the CEE one.
Signed-off-by: Neerav Parikh
Tested-by: Jack Morgan
---
fcoemon.c | 54 ++++++++++++++++++++++++++++++++++++++++++++++++------
1 file changed, 48 insertions(+), 6 deletions(-)
diff --git a/fcoemon.c b/fcoemon.c
index 23fc2f6..3ab1a98 100644
--- a/fcoemon.c
+++ b/fcoemon.c
@@ -1357,12 +1357,8 @@ ieee_state_set(struct fcm_netif *ff, enum ieee_state new_state)
getstr(&ieee_states, new_state));
}
- if (new_state == IEEE_GET_STATE) {
- ff->ieee_state = new_state;
+ if (new_state == IEEE_GET_STATE)
clear_ieee_info(ff);
- ieee_get_req(ff);
- return;
- }
ff->ieee_state = new_state;
ff->ieee_resp_pending = 0;
@@ -3035,6 +3031,50 @@ static void fcm_fcoe_action(struct fcoe_port *p)
/*
* Called for all ports. For FCoE ports and candidates,
+ * get IEEE DCBX information and set the next action.
+ */
+static void fcm_netif_ieee_advance(struct fcm_netif *ff)
+{
+ enum fcp_action action;
+
+ ASSERT(ff);
+ ASSERT(fcm_clif);
+
+ if (fcm_clif->cl_busy)
+ return;
+
+ if (ff->ieee_resp_pending)
+ return;
+
+ switch (ff->ieee_state) {
+ case IEEE_INIT:
+ break;
+ case IEEE_GET_STATE:
+ ieee_get_req(ff);
+ break;
+ case IEEE_DONE:
+ action = validate_ieee_info(ff);
+ switch (action) {
+ case FCP_DESTROY_IF:
+ case FCP_ENABLE_IF:
+ case FCP_ACTIVATE_IF:
+ fcp_action_set(ff->ifname, action);
+ break;
+ case FCP_DISABLE_IF:
+ case FCP_ERROR:
+ fcp_action_set(ff->ifname, FCP_DISABLE_IF);
+ break;
+ case FCP_WAIT:
+ default:
+ break;
+ }
+ default:
+ break;
+ }
+}
+
+/*
+ * Called for all ports. For FCoE ports and candidates,
* get information and send to dcbd.
*/
static void fcm_netif_advance(struct fcm_netif *ff)
@@ -3161,8 +3201,10 @@ static void fcm_handle_changes(void)
/*
* Perform pending actions (dcbd queries) on network interfaces.
*/
- TAILQ_FOREACH(ff, &fcm_netif_head, ff_list)
+ TAILQ_FOREACH(ff, &fcm_netif_head, ff_list) {
fcm_netif_advance(ff);
+ fcm_netif_ieee_advance(ff);
+ }
/*
* Perform actions on FCoE ports
--
1.7.12.4
++++++ 0032-fipvlan-Fix-crash-in-create_and_start_vlan.patch ++++++
From 0d006642c34e360fb7d3c3adbbb1295e784c03bf Mon Sep 17 00:00:00 2001
From: Hannes Reinecke
Date: Mon, 12 May 2014 14:55:50 +0200
Subject: fipvlan: Fix crash in create_and_start_vlan()
create_and_start_vlan() will issue a netlink command to create
a new VLAN device. As this device isn't present yet we need
to exit here and retry the vlan configuration once we get the
appropriate message from netlink.
References: bnc#877275
Signed-off-by: Hannes Reinecke
---
fipvlan.c | 25 +++++++++++++------------
1 file changed, 13 insertions(+), 12 deletions(-)
diff --git a/fipvlan.c b/fipvlan.c
index cc71412..7202f03 100644
--- a/fipvlan.c
+++ b/fipvlan.c
@@ -626,20 +626,21 @@ create_and_start_vlan(struct fcf *fcf, bool vn2vn)
vlan = real_dev;
} else {
vlan = lookup_vlan(fcf->ifindex, fcf->vlan);
- if (vlan) {
- FIP_LOG_DBG("VLAN %s.%d already exists as %s\n",
- real_dev->ifname, fcf->vlan, vlan->ifname);
+ if (!vlan) {
+ snprintf(vlan_name, IFNAMSIZ, "%s.%d%s",
+ real_dev->ifname, fcf->vlan, config.suffix);
+ rc = vlan_create(fcf->ifindex, fcf->vlan, vlan_name);
+ if (rc < 0) {
+ printf("Failed to create VLAN device %s\n"
+ "\t%s\n",
+ vlan_name, strerror(-rc));
+ return rc;
+ }
+ printf("Created VLAN device %s\n", vlan_name);
return 0;
}
- snprintf(vlan_name, IFNAMSIZ, "%s.%d%s",
- real_dev->ifname, fcf->vlan, config.suffix);
- rc = vlan_create(fcf->ifindex, fcf->vlan, vlan_name);
- if (rc < 0) {
- printf("Failed to create VLAN device %s\n\t%s\n",
- vlan_name, strerror(-rc));
- return rc;
- }
- printf("Created VLAN device %s\n", vlan_name);
+ FIP_LOG_DBG("VLAN %s.%d already exists as %s\n",
+ real_dev->ifname, fcf->vlan, vlan->ifname);
}
if (!config.start)
return rc;
--
1.7.12.4
++++++ 0033-fipvlan-suppress-warning-interface-already-exists.patch ++++++
From 798a5ff4a205fa26d37447ff77fc27861103440a Mon Sep 17 00:00:00 2001
From: Hannes Reinecke
Date: Mon, 12 May 2014 14:59:13 +0200
Subject: fipvlan: suppress warning 'interface already exists'
When fipvlan is called for just the parent interface we should
not select the vlan interface, too, otherwise we'll be getting
those annoying warning messages.
Signed-off-by: Hannes Reinecke
---
fipvlan.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/fipvlan.c b/fipvlan.c
index 7202f03..163d21e 100644
--- a/fipvlan.c
+++ b/fipvlan.c
@@ -451,7 +451,8 @@ static void rtnl_recv_newlink(struct nlmsghdr *nh)
int i, iff_selected = 0;
for (i = 0; i < config.namec; i++) {
- if (!strcmp(iff->ifname, config.namev[i]))
+ if (!strncmp(iff->ifname, config.namev[i],
+ strlen(config.namev[i])))
iff_selected = 1;
}
if (!iff_selected) {
--
1.7.12.4
++++++ 0034-fipvlan-do-not-crash-on-empty-MAC-address-in-lookup_.patch ++++++
From eb7451d0dcffb1c247e2b070b6101c2c878faee4 Mon Sep 17 00:00:00 2001
From: Hannes Reinecke
Date: Mon, 12 May 2014 15:24:48 +0200
Subject: fipvlan: do not crash on empty MAC address in lookup_fcf()
We're calling lookup_fcf() with a NULL macaddress, so we need
to ensure we don't crash here.
References: bnc#877275
Signed-off-by: Hannes Reinecke
---
fipvlan.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/fipvlan.c b/fipvlan.c
index 163d21e..c5f3d3f 100644
--- a/fipvlan.c
+++ b/fipvlan.c
@@ -169,7 +169,7 @@ static struct fcf *lookup_fcf(struct fcf_list_head *head, int ifindex,
TAILQ_FOREACH(fcf, head, list_node)
if ((ifindex == fcf->ifindex) && (vlan == fcf->vlan) &&
- (memcmp(mac, fcf->mac_addr, ETHER_ADDR_LEN) == 0))
+ (!mac || memcmp(mac, fcf->mac_addr, ETHER_ADDR_LEN) == 0))
return fcf;
return NULL;
}
--
1.7.12.4
++++++ 0035-fipvlan-fixup-return-value-on-error.patch ++++++
From 16765b7b091f8130ae001af7693895ffe0886a0e Mon Sep 17 00:00:00 2001
From: Hannes Reinecke
Date: Tue, 13 May 2014 09:44:17 +0200
Subject: fipvlan: fixup return value on error
fipvlan should return 1 on error or ENODEV (=19) if no interfaces
were found.
Signed-off-by: Hannes Reinecke
---
fipvlan.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/fipvlan.c b/fipvlan.c
index c5f3d3f..3300c68 100644
--- a/fipvlan.c
+++ b/fipvlan.c
@@ -982,7 +982,7 @@ int main(int argc, char **argv)
ns = rtnl_socket();
if (ns < 0) {
- rc = ns;
+ rc = 1;
goto ns_err;
}
pfd_add(ns);
@@ -1002,7 +1002,7 @@ int main(int argc, char **argv)
"no interfaces to perform discovery on");
else
FIP_LOG("no interfaces to perform discovery on");
- exit(1);
+ exit(ENODEV);
}
do_vlan_discovery();
--
1.7.12.4
++++++ 0036-fipvlan-clean-up-state-machine-for-pfd_add.patch ++++++
From b19353bfa3186334611109456b232e596335c15e Mon Sep 17 00:00:00 2001
From: Hannes Reinecke
Date: Wed, 14 May 2014 16:01:10 +0200
Subject: fipvlan: clean up state machine for pfd_add
pfd_add just adds the fd to the internal list without any checking.
So use the 'fip_ready' flag to track this.
Signed-off-by: Hannes Reinecke
---
fipvlan.c | 17 ++++++++++++++---
1 file changed, 14 insertions(+), 3 deletions(-)
diff --git a/fipvlan.c b/fipvlan.c
index 3300c68..2211fd1 100644
--- a/fipvlan.c
+++ b/fipvlan.c
@@ -397,10 +397,17 @@ static void rtnl_recv_newlink(struct nlmsghdr *nh)
/* already tracking, update operstate and return */
iff->running = running;
if (!iff->running) {
- pfd_remove(iff->ps);
+ if (iff->fip_ready) {
+ pfd_remove(iff->ps);
+ iff->fip_ready = false;
+ }
return;
}
- pfd_add(iff->ps);
+ if (iff->ps >= 0 && !iff->fip_ready) {
+ pfd_add(iff->ps);
+ iff->fip_ready = true;
+ }
+
if (!config.start)
return;
@@ -440,6 +447,7 @@ static void rtnl_recv_newlink(struct nlmsghdr *nh)
iff->ifindex = ifm->ifi_index;
iff->running = running;
iff->fip_ready = false;
+ iff->ps = -1;
if (ifla[IFLA_LINK])
iff->iflink = *(int *)RTA_DATA(ifla[IFLA_LINK]);
else
@@ -827,7 +835,8 @@ static int probe_fip_interface(struct iff *iff)
if (iff->req_sent)
return 0;
- if (!iff->fip_ready) {
+ if (iff->ps < 0) {
+ iff->fip_ready = false;
iff->ps = fip_socket(iff->ifindex, FIP_NONE);
if (iff->ps < 0) {
FIP_LOG_DBG("if %d not ready\n", iff->ifindex);
@@ -835,6 +844,8 @@ static int probe_fip_interface(struct iff *iff)
}
setsockopt(iff->ps, SOL_PACKET, PACKET_ORIGDEV,
&origdev, sizeof(origdev));
+ }
+ if (!iff->fip_ready) {
pfd_add(iff->ps);
iff->fip_ready = true;
}
--
1.7.12.4
--
To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org
For additional commands, e-mail: opensuse-commit+help@opensuse.org