Openembedded Core Discussions
 help / color / mirror / Atom feed
* [PATCH 0/4] runqemu fixes about iptables rules and preconfigured tap
@ 2013-08-27  7:07 Qi.Chen
  2013-08-27  7:08 ` [PATCH 1/4] runqemu-ifdown: clean up the remaining iptables rules Qi.Chen
                   ` (3 more replies)
  0 siblings, 4 replies; 9+ messages in thread
From: Qi.Chen @ 2013-08-27  7:07 UTC (permalink / raw)
  To: openembedded-core

From: Chen Qi <Qi.Chen@windriver.com>

The following changes since commit 44c3f72684c5c920ce8af1da54a2268047342589:

  lib/oeqa/runtime: smart: add checks for smart output (2013-08-26 16:29:18 +0100)

are available in the git repository at:

  git://git.pokylinux.org/poky-contrib ChenQi/runqemu-fixes
  http://git.pokylinux.org/cgit.cgi/poky-contrib/log/?h=ChenQi/runqemu-fixes

Chen Qi (4):
  runqemu-ifdown: clean up the remaining iptables rules
  runqemu-internal: don't bring down preconfigured tap interface
  runqemu-internal: change the lock acquire/release logic
  runqemu-internal: provide more info if a preconfigured tap is used

 scripts/runqemu-ifdown   |   14 ++++++++++++++
 scripts/runqemu-internal |   20 ++++++++++----------
 2 files changed, 24 insertions(+), 10 deletions(-)

-- 
1.7.9.5



^ permalink raw reply	[flat|nested] 9+ messages in thread

* [PATCH 1/4] runqemu-ifdown: clean up the remaining iptables rules
  2013-08-27  7:07 [PATCH 0/4] runqemu fixes about iptables rules and preconfigured tap Qi.Chen
@ 2013-08-27  7:08 ` Qi.Chen
  2013-08-27  7:08 ` [PATCH 2/4] runqemu-internal: don't bring down preconfigured tap interface Qi.Chen
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 9+ messages in thread
From: Qi.Chen @ 2013-08-27  7:08 UTC (permalink / raw)
  To: openembedded-core

From: Chen Qi <Qi.Chen@windriver.com>

The iptables rules for the tap interface are added by runqemu-ifup
everytime we use runqemu to start a qemu target. But it's not cleaned
up when runqemu exits.

This patch cleans up the remaining iptables rules for the tap interface
in runqemu-ifdown.

[YOCTO #5047]

Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
---
 scripts/runqemu-ifdown |   14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/scripts/runqemu-ifdown b/scripts/runqemu-ifdown
index 8b8c5a4..8f66cfa2 100755
--- a/scripts/runqemu-ifdown
+++ b/scripts/runqemu-ifdown
@@ -50,3 +50,17 @@ if [ ! -e "$TUNCTL" ]; then
 fi
 
 $TUNCTL -d $TAP
+
+# cleanup the remaining iptables rules
+IPTABLES=`which iptables 2> /dev/null`
+if [ "x$IPTABLES" = "x" ]; then
+	IPTABLES=/sbin/iptables
+fi
+if [ ! -x "$IPTABLES" ]; then
+	echo "$IPTABLES cannot be executed"
+	exit 1
+fi
+n=$[ (`echo $TAP | sed 's/tap//'` * 2) + 1 ]
+dest=$[ (`echo $TAP | sed 's/tap//'` * 2) + 2 ]
+$IPTABLES -D POSTROUTING -t nat -j MASQUERADE -s 192.168.7.$n/32
+$IPTABLES -D POSTROUTING -t nat -j MASQUERADE -s 192.168.7.$dest/32
-- 
1.7.9.5



^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH 2/4] runqemu-internal: don't bring down preconfigured tap interface
  2013-08-27  7:07 [PATCH 0/4] runqemu fixes about iptables rules and preconfigured tap Qi.Chen
  2013-08-27  7:08 ` [PATCH 1/4] runqemu-ifdown: clean up the remaining iptables rules Qi.Chen
@ 2013-08-27  7:08 ` Qi.Chen
  2013-08-27  7:08 ` [PATCH 3/4] runqemu-internal: change the lock acquire/release logic Qi.Chen
  2013-08-27  7:08 ` [PATCH 4/4] runqemu-internal: provide more info if a preconfigured tap is used Qi.Chen
  3 siblings, 0 replies; 9+ messages in thread
From: Qi.Chen @ 2013-08-27  7:08 UTC (permalink / raw)
  To: openembedded-core

From: Chen Qi <Qi.Chen@windriver.com>

runqemu-ifup and runqemu-ifdown should be pairs. If we're using a
preconfigured tap interface, the runqemu-ifdown should not be invoked
to bring it down.

Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
---
 scripts/runqemu-internal |    4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/scripts/runqemu-internal b/scripts/runqemu-internal
index 8a6e551..8165e13 100755
--- a/scripts/runqemu-internal
+++ b/scripts/runqemu-internal
@@ -175,12 +175,14 @@ else
         POSSIBLE=`$IFCONFIG link | grep 'tap' | awk '{print $2}' | sed s/://`
         TAP=""
         LOCKFILE=""
+        USE_PRECONF_TAP="no"
         for tap in $POSSIBLE; do
             LOCKFILE="$LOCKDIR/$tap"
             echo "Acquiring lockfile for $tap..."
             acquire_lock $LOCKFILE
             if [ $? -eq 0 ]; then
                 TAP=$tap
+                USE_PRECONF_TAP="yes"
                 break
             fi
         done
@@ -215,7 +217,7 @@ else
         fi
 
         cleanup() {
-            if [ ! -e "$NOSUDO_FLAG" ]; then
+            if [ ! -e "$NOSUDO_FLAG" -a "$USE_PRECONF_TAP" = "no" ]; then
                 # Redirect stderr since we could see a LD_PRELOAD warning here if pseudo is loaded
                 # but inactive. This looks scary but is harmless
                 sudo $QEMUIFDOWN $TAP $OECORE_NATIVE_SYSROOT 2> /dev/null
-- 
1.7.9.5



^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH 3/4] runqemu-internal: change the lock acquire/release logic
  2013-08-27  7:07 [PATCH 0/4] runqemu fixes about iptables rules and preconfigured tap Qi.Chen
  2013-08-27  7:08 ` [PATCH 1/4] runqemu-ifdown: clean up the remaining iptables rules Qi.Chen
  2013-08-27  7:08 ` [PATCH 2/4] runqemu-internal: don't bring down preconfigured tap interface Qi.Chen
@ 2013-08-27  7:08 ` Qi.Chen
  2013-08-27 10:09   ` Richard Purdie
  2013-08-27 10:14   ` Phil Blundell
  2013-08-27  7:08 ` [PATCH 4/4] runqemu-internal: provide more info if a preconfigured tap is used Qi.Chen
  3 siblings, 2 replies; 9+ messages in thread
From: Qi.Chen @ 2013-08-27  7:08 UTC (permalink / raw)
  To: openembedded-core

From: Chen Qi <Qi.Chen@windriver.com>

Checking whether the lock file exists is sufficient for runqemu.
The contents of the lock file is not important.

This patch simplifies the lock acquire/release logic by removing the
flock mechanism. Also, we give more information to user indicating
why a tap interface is skipped.

As a side effect, the user now can easily create a lock file to
make runqemu skip a specific tap interface.

[YOCTO #5048]

Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
---
 scripts/runqemu-internal |   14 ++++++--------
 1 file changed, 6 insertions(+), 8 deletions(-)

diff --git a/scripts/runqemu-internal b/scripts/runqemu-internal
index 8165e13..3f8674c 100755
--- a/scripts/runqemu-internal
+++ b/scripts/runqemu-internal
@@ -135,15 +135,12 @@ else
                 return 1
             fi
 
-            touch $lockfile.lock
-            exec 8>$lockfile.lock
-            flock -n -x 8
-            if [ $? -ne 0 ]; then
-                exec 8>&-
+            if [ -e $lockfile.lock ]; then
                 return 1
+            else
+                touch $lockfile.lock
+                return 0
             fi
-
-            return 0
         }
 
         release_lock() {
@@ -154,7 +151,6 @@ else
             fi
 
             rm -f $lockfile.lock
-            exec  8>&-
         }
 
         LOCKDIR="/tmp/qemu-tap-locks"
@@ -184,6 +180,8 @@ else
                 TAP=$tap
                 USE_PRECONF_TAP="yes"
                 break
+            else
+                echo "Skipping $tap as it's locked by $LOCKFILE.lock"
             fi
         done
 
-- 
1.7.9.5



^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH 4/4] runqemu-internal: provide more info if a preconfigured tap is used
  2013-08-27  7:07 [PATCH 0/4] runqemu fixes about iptables rules and preconfigured tap Qi.Chen
                   ` (2 preceding siblings ...)
  2013-08-27  7:08 ` [PATCH 3/4] runqemu-internal: change the lock acquire/release logic Qi.Chen
@ 2013-08-27  7:08 ` Qi.Chen
  3 siblings, 0 replies; 9+ messages in thread
From: Qi.Chen @ 2013-08-27  7:08 UTC (permalink / raw)
  To: openembedded-core

From: Chen Qi <Qi.Chen@windriver.com>

We should provide the user more information if a preconfigured tap
is used. This is because the user might have manually set up the tap
interface to be used by other qemu binaries.

So at a minimum, we should let the user know how to make runqemu skip
that tap interface.

[YOCTO #5047]

Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
---
 scripts/runqemu-internal |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/scripts/runqemu-internal b/scripts/runqemu-internal
index 3f8674c..d6ceb28 100755
--- a/scripts/runqemu-internal
+++ b/scripts/runqemu-internal
@@ -211,7 +211,7 @@ else
                 TAP=$tap
             fi 
         else
-            echo "Using preconfigured tap device '$TAP'"
+            echo "Using preconfigured tap device '$TAP'. If this is not intended, create $LOCKFILE.lock to make runqemu skip $TAP."
         fi
 
         cleanup() {
-- 
1.7.9.5



^ permalink raw reply related	[flat|nested] 9+ messages in thread

* Re: [PATCH 3/4] runqemu-internal: change the lock acquire/release logic
  2013-08-27  7:08 ` [PATCH 3/4] runqemu-internal: change the lock acquire/release logic Qi.Chen
@ 2013-08-27 10:09   ` Richard Purdie
  2013-08-28  2:25     ` ChenQi
  2013-08-27 10:14   ` Phil Blundell
  1 sibling, 1 reply; 9+ messages in thread
From: Richard Purdie @ 2013-08-27 10:09 UTC (permalink / raw)
  To: Qi.Chen; +Cc: openembedded-core

On Tue, 2013-08-27 at 15:08 +0800, Qi.Chen@windriver.com wrote:
> From: Chen Qi <Qi.Chen@windriver.com>
> 
> Checking whether the lock file exists is sufficient for runqemu.
> The contents of the lock file is not important.

What happens if the runqemu script crashes and leaves the lockfile
around? Why are we removing perfectly functional code?

Cheers,

Richard




^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH 3/4] runqemu-internal: change the lock acquire/release logic
  2013-08-27  7:08 ` [PATCH 3/4] runqemu-internal: change the lock acquire/release logic Qi.Chen
  2013-08-27 10:09   ` Richard Purdie
@ 2013-08-27 10:14   ` Phil Blundell
  2013-08-28  2:32     ` ChenQi
  1 sibling, 1 reply; 9+ messages in thread
From: Phil Blundell @ 2013-08-27 10:14 UTC (permalink / raw)
  To: Qi.Chen; +Cc: openembedded-core

On Tue, 2013-08-27 at 15:08 +0800, Qi.Chen@windriver.com wrote:
> This patch simplifies the lock acquire/release logic by removing the
> flock mechanism.

I'm not sure that "simplifies" is an accurate description of the results
of removing flock.  How about "breaks"?

p.




^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH 3/4] runqemu-internal: change the lock acquire/release logic
  2013-08-27 10:09   ` Richard Purdie
@ 2013-08-28  2:25     ` ChenQi
  0 siblings, 0 replies; 9+ messages in thread
From: ChenQi @ 2013-08-28  2:25 UTC (permalink / raw)
  To: Richard Purdie; +Cc: openembedded-core

On 08/27/2013 06:09 PM, Richard Purdie wrote:
> On Tue, 2013-08-27 at 15:08 +0800, Qi.Chen@windriver.com wrote:
>> From: Chen Qi <Qi.Chen@windriver.com>
>>
>> Checking whether the lock file exists is sufficient for runqemu.
>> The contents of the lock file is not important.
> What happens if the runqemu script crashes and leaves the lockfile
> around? Why are we removing perfectly functional code?
>
> Cheers,
>
> Richard
>
>
>
>

Yes. You're right.
I'll drop this patch and send out a V2.

Best Regards,
Chen Qi


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH 3/4] runqemu-internal: change the lock acquire/release logic
  2013-08-27 10:14   ` Phil Blundell
@ 2013-08-28  2:32     ` ChenQi
  0 siblings, 0 replies; 9+ messages in thread
From: ChenQi @ 2013-08-28  2:32 UTC (permalink / raw)
  To: Phil Blundell; +Cc: openembedded-core

On 08/27/2013 06:14 PM, Phil Blundell wrote:
> On Tue, 2013-08-27 at 15:08 +0800, Qi.Chen@windriver.com wrote:
>> This patch simplifies the lock acquire/release logic by removing the
>> flock mechanism.
> I'm not sure that "simplifies" is an accurate description of the results
> of removing flock.  How about "breaks"?
>
> p.
>
>
>
>
>
That would be a better description.
I then realized I did break the logic.
I'll drop this patch and send out a v2.

Best Regards,
Chen Qi


^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2013-08-28  2:31 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-08-27  7:07 [PATCH 0/4] runqemu fixes about iptables rules and preconfigured tap Qi.Chen
2013-08-27  7:08 ` [PATCH 1/4] runqemu-ifdown: clean up the remaining iptables rules Qi.Chen
2013-08-27  7:08 ` [PATCH 2/4] runqemu-internal: don't bring down preconfigured tap interface Qi.Chen
2013-08-27  7:08 ` [PATCH 3/4] runqemu-internal: change the lock acquire/release logic Qi.Chen
2013-08-27 10:09   ` Richard Purdie
2013-08-28  2:25     ` ChenQi
2013-08-27 10:14   ` Phil Blundell
2013-08-28  2:32     ` ChenQi
2013-08-27  7:08 ` [PATCH 4/4] runqemu-internal: provide more info if a preconfigured tap is used Qi.Chen

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox