diff --git a/default-init.txt b/default-init.txt index f42499a..4f873de 100644 --- a/default-init.txt +++ b/default-init.txt @@ -1 +1,2 @@ getty.lua +fsmanager.lua diff --git a/service/fsmanager.lua b/service/fsmanager.lua index 68ec330..e33beaa 100644 --- a/service/fsmanager.lua +++ b/service/fsmanager.lua @@ -1,11 +1,21 @@ +local function mount(addr) + dest = component.invoke(addr,"getLabel") or "mnt/"..addr:sub(1,3) + dest = "/"..dest + syslog("Mounting "..addr.." to "..dest) + fs.makeDirectory(dest) + local w,r = fs.mount(dest,component.proxy(addr)) + if not w then + syslog("Failed to mount: "..r) + end +end +for addr, _ in component.list("filesystem") do + mount(addr) +end while true do local tE = {coroutine.yield()} if tE[1] == "component_added" and tE[3] == "filesystem" then - local w, doesExist = pcall(fs.exists,"/"..tE[2]:sub(1,3)) - if not w or not doesExist then - fs.mounts[tE[2]:sub(1,3)] = component.proxy(tE[2]) - end + mount(tE[2]) elseif tE[1] == "component_removed" and tE[3] == "filesystem" then - fs.mounts[tE[2]:sub(1,3)] = nil + fs.umount("/mnt/"..tE[2]:sub(1,3)) end end