block: remove mount target file if it's a link
authorRafał Miłecki <rafal@milecki.pl>
Sat, 28 Dec 2019 21:07:21 +0000 (22:07 +0100)
committerRafał Miłecki <rafal@milecki.pl>
Sat, 21 Mar 2020 21:40:52 +0000 (22:40 +0100)
Links like that can remain from using autofs and can cause mounting
errors after switching to non-autofs:

block: mounting /dev/sda1 (vfat) as /mnt/sda1 failed (2) - No such file or directory

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

diff --git a/block.c b/block.c
index 50d877fbeb08e1d2b445549224f0565eecd56791..9e530f1a93b8e729cf9aeadfd508bd261928070a 100644 (file)
--- a/block.c
+++ b/block.c
@@ -1072,6 +1072,7 @@ static int mount_device(struct device *dev, int type)
 {
        struct mount *m;
        struct probe_info *pr;
+       struct stat st;
        char _target[32];
        char *target;
        char *device;
@@ -1154,6 +1155,8 @@ static int mount_device(struct device *dev, int type)
                check_filesystem(pr);
 
        mkdir_p(target);
+       if (!lstat(target, &st) && S_ISLNK(st.st_mode))
+               unlink(target);
 
        err = handle_mount(pr->dev, target, pr->type, m);
        if (err) {