[OE-core] [PATCH] classes/image_types_wic.bbclass: fix racing risk on rootfs
Hongxu Jia
hongxu.jia at windriver.com
Mon Oct 28 16:09:56 UTC 2019
Since wic image creation will temporarily update rootfs/etc/fstab
(*temporarily* means the fstab will be recovered after wic image creation),
there is still racing risk during the temporarily time for other image
creation (such as tar, ext)
Make a copy of rootfs(as rootfs_wic), and create wic image based on the copy.
Signed-off-by: Hongxu Jia <hongxu.jia at windriver.com>
---
meta/classes/image_types_wic.bbclass | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)
diff --git a/meta/classes/image_types_wic.bbclass b/meta/classes/image_types_wic.bbclass
index f350dc2..2a93143 100644
--- a/meta/classes/image_types_wic.bbclass
+++ b/meta/classes/image_types_wic.bbclass
@@ -26,15 +26,20 @@ def wks_search(files, search_path):
WIC_CREATE_EXTRA_ARGS ?= ""
IMAGE_CMD_wic () {
+ [ -d "${IMAGE_ROOTFS}_wic" ] && rm -rf "${IMAGE_ROOTFS}_wic"
+ # Refer oe.path.copytree(src, dst): ${WORKDIR}/rootfs -> ${WORKDIR}/rootfs_wic
+ mkdir -p "${IMAGE_ROOTFS}_wic"
+ tar --xattrs --xattrs-include="*" -cf - -S -C "${IMAGE_ROOTFS}" -p . | tar --xattrs --xattrs-include="*" -xf - -C "${IMAGE_ROOTFS}_wic"
+
out="${IMGDEPLOYDIR}/${IMAGE_NAME}"
wks="${WKS_FULL_PATH}"
if [ -z "$wks" ]; then
bbfatal "No kickstart files from WKS_FILES were found: ${WKS_FILES}. Please set WKS_FILE or WKS_FILES appropriately."
fi
- BUILDDIR="${TOPDIR}" wic create "$wks" --vars "${STAGING_DIR}/${MACHINE}/imgdata/" -e "${IMAGE_BASENAME}" -o "$out/" ${WIC_CREATE_EXTRA_ARGS}
+ BUILDDIR="${TOPDIR}" wic create "$wks" --vars "${STAGING_DIR}/${MACHINE}/imgdata/" -e "${IMAGE_BASENAME}" -r "${IMAGE_ROOTFS}_wic" -o "$out/" ${WIC_CREATE_EXTRA_ARGS}
mv "$out/$(basename "${wks%.wks}")"*.direct "$out${IMAGE_NAME_SUFFIX}.wic"
- rm -rf "$out/"
+ rm -rf "$out/" "${IMAGE_ROOTFS}_wic"
}
IMAGE_CMD_wic[vardepsexclude] = "WKS_FULL_PATH WKS_FILES TOPDIR"
--
2.7.4
More information about the Openembedded-core
mailing list