From: Rafał Miłecki <ra...@milecki.pl> It may happen that on mountd start some devices are already mounted. This could due to killing previous mountd instance or just a crash. In such case device shouldn't get remounted but added to the list with a mounted flag set. That will make mountd monitor it and take needed steps when it disappears.
Signed-off-by: Rafał Miłecki <ra...@milecki.pl> --- mount.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/mount.c b/mount.c index f995745..d7aa27c 100644 --- a/mount.c +++ b/mount.c @@ -138,7 +138,7 @@ static void mount_add_list(char *name, char *dev, char *serial, char *vendor, char *model, char *rev, int ignore, char *size, char *sector_size, int fs) { struct mount *mount; - char tmp[64], tmp2[64]; + char tmp[64], run_mount_path[64]; mount = malloc(sizeof(struct mount)); INIT_LIST_HEAD(&mount->list); @@ -154,12 +154,18 @@ static void mount_add_list(char *name, char *dev, char *serial, mount->mounted = 0; mount->fs = fs; list_add(&mount->list, &mounts); + + snprintf(run_mount_path, 64, "/tmp/run/mountd/%s", dev); + if (is_mounted(NULL, run_mount_path)) { + log_printf("mount point %s already exists!\n", run_mount_path); + mount->mounted = 1; + return; + } if (!mount->ignore) { log_printf("new mount : %s -> %s (%s)\n", name, dev, fs_names[mount->fs]); snprintf(tmp, 64, "%s%s", uci_path, name); - snprintf(tmp2, 64, "/tmp/run/mountd/%s", dev); - symlink(tmp2, tmp); + symlink(run_mount_path, tmp); if (!mount_new("/tmp/run/mountd/", dev)) system_printf("ACTION=add DEVICE=%s NAME=%s /sbin/hotplug-call mount", dev, name); } -- 2.11.0 _______________________________________________ Lede-dev mailing list Lede-dev@lists.infradead.org http://lists.infradead.org/mailman/listinfo/lede-dev