block: remove target directory after unmounting
authorRafał Miłecki <rafal@milecki.pl>
Mon, 10 Dec 2018 06:48:50 +0000 (07:48 +0100)
committerRafał Miłecki <rafal@milecki.pl>
Wed, 12 Dec 2018 13:02:38 +0000 (14:02 +0100)
This removes dangling directory fixing two issues:

1) Non autofs case
   Leaving directory in /mnt/ and switching to autofs would result in
   blockd failing to symlink().
2) autofs case
   Leaving directory in /var/run/blockd/ could result in apps trying to
   access it causing errors like:
   blockd: kernel is requesting a mount -> sda1
   blockd: failed to run block. add/sda1

Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
block.c

diff --git a/block.c b/block.c
index 091375feb8a46b061be2fd02d4aed8d17c9d523c..f7fdc274b2c2902f8e9ea917f12aba733d9803e2 100644 (file)
--- a/block.c
+++ b/block.c
@@ -1130,11 +1130,13 @@ static int umount_device(char *path)
        hotplug_call_mount("remove", basename(path));
 
        err = umount2(mp, MNT_DETACH);
-       if (err)
+       if (err) {
                ULOG_ERR("unmounting %s (%s) failed (%d) - %m\n", path, mp,
                         errno);
-       else
+       } else {
                ULOG_INFO("unmounted %s (%s)\n", path, mp);
+               rmdir(mp);
+       }
 
        free(mp);
        return err;