From 297684ea68afc205926f5c528cd47b5f6f3bc0a9 Mon Sep 17 00:00:00 2001
From: Ross Brattain <ross.b.brattain@intel.com>
Date: Tue, 20 Mar 2018 00:58:32 -0700
Subject: dump CI failures with kpartx and no /dev/loop devices

CI is failing due to unable to find loop device for kpartx

"cmd": [
    "kpartx",
    "-l",
    "/tmp/workspace/yardstick/yardstick-xenial-server.raw"
]

"stderr": "mount: could not find any device /dev/loop#Bad address\ncan't set up loop",

This error occurs when kpartx can't find any loop devices to use

https://build.opnfv.org/ci/job/yardstick-compass-virtual-daily-master/3261/console

JIRA: YARDSTICK-1054
JIRA: YARDSTICK-1096

Change-Id: Ib6131ce29c4f9e81386eb5471dd6107825798620
Signed-off-by: Ross Brattain <ross.b.brattain@intel.com>
---
 ansible/build_yardstick_image.yml | 18 ++++++++++++++++--
 1 file changed, 16 insertions(+), 2 deletions(-)

(limited to 'ansible')

diff --git a/ansible/build_yardstick_image.yml b/ansible/build_yardstick_image.yml
index c9b6e74e9..4ad6e97a9 100644
--- a/ansible/build_yardstick_image.yml
+++ b/ansible/build_yardstick_image.yml
@@ -59,7 +59,7 @@
     - set_fact:
         raw_imgfile: "{{ workspace }}/{{ raw_imgfile_basename }}"
 
-  # cleanup non-lxd
+    # cleanup non-lxd
     - name: unmount all old mount points
       mount:
         name: "{{ item }}"
@@ -74,6 +74,13 @@
       command: kpartx -dv "{{ raw_imgfile }}"
       ignore_errors: true
 
+    - name: delete loop devices for image file
+      # use this because kpartx -dv will fail if raw_imgfile was delete
+      # but in theory we could have deleted file still attached to loopback device?
+      # use grep because of // and awk
+      shell: losetup -O NAME,BACK-FILE | grep "{{ raw_imgfile }}" | awk '{ print $1 }' | xargs -l1 losetup -d
+      ignore_errors: true
+
     - name: delete {{ raw_imgfile }}
       file:
         path: "{{ raw_imgfile }}"
@@ -114,8 +121,15 @@
       with_sequence: start=0 end=9
       tags: mknod_devices
 
+    - name: Debug dump loop devices
+      command: losetup
+      register: losetup_output
+
+    - debug:
+        var: losetup_output
+        verbosity: 2
+
     - name: find first partition device
-#      command: kpartx -l "{{ loop_device }}"
       command: kpartx -l "{{ raw_imgfile }}"
       register: kpartx_res
 
-- 
cgit