*
* @STATUS_UNMOUNTED: currently not mounted
* @STATUS_MOUNTED: mounted & ready for usage
+ * @STATUS_EXPIRED: mount expired & *temporary* unmounted
* @STATUS_IGNORE: entry should be ignored and never mounted
*/
enum status {
STATUS_UNMOUNTED = 0,
STATUS_MOUNTED,
+ STATUS_EXPIRED,
STATUS_IGNORE,
};
char *vendor, char *model, char *rev, int ignore, char *size, char *sector_size, int fs)
{
struct mount *mount;
- char tmp[64], tmp2[64];
+ char dev_path[64], dev_link[64];
mount = malloc(sizeof(struct mount));
INIT_LIST_HEAD(&mount->list);
mount->status = STATUS_IGNORE;
} else {
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);
+ snprintf(dev_link, sizeof(dev_link), "%s%s", uci_path, name);
+ snprintf(dev_path, sizeof(dev_path), "%s%s", "/tmp/run/mountd/", dev);
+ symlink(dev_path, dev_link);
if (!mount_new("/tmp/run/mountd/", dev))
system_printf("ACTION=add DEVICE=%s NAME=%s /sbin/hotplug-call mount", dev, name);
}
char tmp[256];
int ret;
snprintf(tmp, 256, "%s%s", path, dev);
- log_printf("%s has expired... unmounting\n", tmp);
+ log_printf("device %s has expired... unmounting %s\n", dev, tmp);
ret = system_printf("/bin/umount %s", tmp);
if(ret != 0)
return 0;
rmdir(tmp);
mount = mount_find(0, dev);
if(mount)
- mount->status = STATUS_UNMOUNTED;
+ mount->status = STATUS_EXPIRED;
log_printf("finished unmounting\n");
mount_dump_uci_state();
return 0;
char tmp[256];
if (mount->status == STATUS_MOUNTED) {
- snprintf(tmp, 256, "%s%s", "/tmp/run/mountd/", mount->name);
- log_printf("%s has dissappeared ... unmounting\n", tmp);
snprintf(tmp, 256, "%s%s", "/tmp/run/mountd/", mount->dev);
+ log_printf("device %s has disappeared ... unmounting %s\n", mount->dev, tmp);
system_printf("/bin/umount %s", tmp);
rmdir(tmp);
- snprintf(tmp, 64, "%s%s", uci_path, mount->name);
- unlink(tmp);
mount_dump_uci_state();
}
}
if(!check_block(q->dev)||del)
{
mount_dev_del(q);
- p->prev->next = p->next;
- p->next->prev = p->prev;
- p = p->next;
- log_printf("removing %s\n", q->dev);
- if (q->status == STATUS_MOUNTED) {
- snprintf(tmp, 64, "%s%s", "/tmp/run/mountd/", q->dev);
- rmdir(tmp);
+ if (q->status == STATUS_MOUNTED || q->status == STATUS_EXPIRED) {
snprintf(tmp, 64, "%s%s", uci_path, q->name);
+ log_printf("unlinking %s\n", tmp);
unlink(tmp);
system_printf("ACTION=remove DEVICE=%s NAME=%s /sbin/hotplug-call mount", q->dev, q->name);
}
+
+ p->prev->next = p->next;
+ p->next->prev = p->prev;
+ p = p->next;
free(q);
+
mount_dump_uci_state();
system_printf("/etc/fonstated/ReloadSamba");
} else p = p->next;