}
}
-static void mount_dev_del(char *dev)
+static void mount_dev_del(struct mount *mount)
{
- struct mount *mount = mount_find(0, dev);
char tmp[256];
- if(mount)
- {
- if(mount->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);
- system_printf("/bin/umount %s", tmp);
- rmdir(tmp);
- snprintf(tmp, 64, "%s%s", uci_path, mount->name);
- unlink(tmp);
- mount_dump_uci_state();
- }
+
+ if (mount->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);
+ system_printf("/bin/umount %s", tmp);
+ rmdir(tmp);
+ snprintf(tmp, 64, "%s%s", uci_path, mount->name);
+ unlink(tmp);
+ mount_dump_uci_state();
}
}
return 0;
}
-static void mount_check_mount_list(void)
+static void mount_update_mount_list(void)
{
FILE *fp = fopen("/proc/mounts", "r");
char tmp[256];
while(fgets(tmp, 256, fp) != NULL)
{
char *t, *t2;
+
+ if (mounted_count + 1 > MAX_MOUNTED) {
+ log_printf("found more than %d mounts \n", MAX_MOUNTED);
+ break;
+ }
+
t = strstr(tmp, " ");
if(t)
{
mounted[mounted_count][0],
mounted[mounted_count][1],
mounted[mounted_count][2]);*/
- if(mounted_count < MAX_MOUNTED - 1)
- mounted_count++;
- else
- log_printf("found more than %d mounts \n", MAX_MOUNTED);
+
+ mounted_count++;
}
fclose(fp);
}
}
if(!check_block(q->dev)||del)
{
- mount_dev_del(q->dev);
+ mount_dev_del(q);
p->prev->next = p->next;
p->next->prev = p->prev;
p = p->next;
log_printf("removing %s\n", q->dev);
- snprintf(tmp, 64, "%s%s", "/tmp/run/mountd/", q->dev);
- rmdir(tmp);
- snprintf(tmp, 64, "%s%s", uci_path, q->name);
- unlink(tmp);
- system_printf("ACTION=remove DEVICE=%s NAME=%s /sbin/hotplug-call mount", q->dev, q->name);
+ if (q->mounted) {
+ snprintf(tmp, 64, "%s%s", "/tmp/run/mountd/", q->dev);
+ rmdir(tmp);
+ snprintf(tmp, 64, "%s%s", uci_path, q->name);
+ unlink(tmp);
+ system_printf("ACTION=remove DEVICE=%s NAME=%s /sbin/hotplug-call mount", q->dev, q->name);
+ }
free(q);
mount_dump_uci_state();
system_printf("/etc/fonstated/ReloadSamba");
void mount_init(void)
{
INIT_LIST_HEAD(&mounts);
- timer_add(mount_check_mount_list, 2);
+ timer_add(mount_update_mount_list, 2);
timer_add(mount_check_enum, 1);
- mount_check_mount_list();
+ mount_update_mount_list();
}