busybox: patch "umount: ignore -c"

Upstream busybox has a change to ignore the -c option, which systemd
uses when unmounting during shutdown/reboot. Currently, if -c is used,
umount fails. This results in extensive umount failures during shutdown.

See http://lists.busybox.net/pipermail/busybox/2018-January/086045.html

Change-Id: I4630935dc5ec61263a7af9e24b70ca8f1f8b5359
Signed-off-by: Eddie James <eajames@us.ibm.com>
diff --git a/common/recipes-core/busybox/busybox/0001-umount-ignore--c.patch b/common/recipes-core/busybox/busybox/0001-umount-ignore--c.patch
new file mode 100644
index 0000000..0c8e836
--- /dev/null
+++ b/common/recipes-core/busybox/busybox/0001-umount-ignore--c.patch
@@ -0,0 +1,49 @@
+From 24cd2c1c2893cf456bd93ed3091fca878bfc014f Mon Sep 17 00:00:00 2001
+From: Eddie James <eajames@us.ibm.com>
+Date: Thu, 5 Jul 2018 08:46:18 -0500
+Subject: [PATCH] umount: ignore -c
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+systemd uses -c.
+    -c, --no-canonicalize
+        Do  not canonicalize paths.  The paths canonicalization is based
+        on stat(2) and readlink(2) system calls. These system calls  may
+        hang  in  some cases (for example on NFS if server is not availā€
+        able). The option has to be used  with  canonical  path  to  the
+        mount point.
+
+        For  more  details  about this option see the mount(8) man page.
+        Note  that  umount  does   not   pass   this   option   to   the
+        /sbin/umount.type helpers.
+
+As busybox doesn't canonicalize paths in the first place it is safe to
+ignore this option.
+
+See https://github.com/systemd/systemd/issues/7786
+
+Signed-off-by: Shawn Landden <slandden at gmail.com>
+Signed-off-by: Eddie James <eajames@us.ibm.com>
+---
+ util-linux/umount.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/util-linux/umount.c b/util-linux/umount.c
+index 0c50dc9..0425c5b 100644
+--- a/util-linux/umount.c
++++ b/util-linux/umount.c
+@@ -68,8 +68,8 @@ static struct mntent *getmntent_r(FILE* stream, struct mntent* result,
+ }
+ #endif
+ 
+-/* ignored: -v -t -i */
+-#define OPTION_STRING           "fldnra" "vt:i"
++/* ignored: -c -v -t -i */
++#define OPTION_STRING           "fldnra" "cvt:i"
+ #define OPT_FORCE               (1 << 0) // Same as MNT_FORCE
+ #define OPT_LAZY                (1 << 1) // Same as MNT_DETACH
+ #define OPT_FREELOOP            (1 << 2)
+-- 
+1.8.3.1
+
diff --git a/common/recipes-core/busybox/busybox_%.bbappend b/common/recipes-core/busybox/busybox_%.bbappend
index e6678fc..5acaf3c 100644
--- a/common/recipes-core/busybox/busybox_%.bbappend
+++ b/common/recipes-core/busybox/busybox_%.bbappend
@@ -3,3 +3,4 @@
 SRC_URI += "file://flash.cfg"
 SRC_URI += "file://mountpoint.cfg"
 SRC_URI += "file://0001-Stop-watchdog-first-on-startup.patch"
+SRC_URI += "file://0001-umount-ignore--c.patch"