On 08/26/2011 06:58 AM, Thomas Bächler wrote:
Am 26.08.2011 11:43, schrieb Gerardo Exequiel Pozzi:
Hm, I did not see that, or misinterpreted it. Looks good, but ...
If you ask me how to do this is filesystem are built-in in kernel, I do
not know.
Yes, it only works for modules. If we had refcounts for the block
devices themselves, that would be great.
Yes look at /proc/devices for blocks devs then:
/sys/module/sd_mod/refcnt
/sys/module/loop/refcnt
etc, etc...
Those are kernel modules, not block devices. Depending on kernel
configuration, they might be present or not.
Sure those are an abstraction of block devices that you have (real or
virtual).
What I am looking for is a counter for the block device itself (LVM
shows the "open count", I would hope that is not dm-specific).
Not per device, but for the whole abstraction:
Again /sys/module/$blk/refcnt, but seems that needs an example to trust me:
# exec 6< /dev/sda
# cat /sys/module/sd_mod/refcnt
1
# exec 6< /dev/sda1
# cat /sys/module/sd_mod/refcnt
2
# exec 8< /dev/sdb
# cat /sys/module/sd_mod/refcnt
3
In our kernel, we do not have built-in file systems, but it is still not
a generic solution.
Looks like we are going beyond what we can see... This is more
heuristic, if you have already unmounted all filesystem, is the task of
the kernel to flush buffers for each block device, then (if apply) sync
device cache and stop it!
Sure, that is the kernel's job. But it would also be the kernel's job to
tell userspace when it actually finished doing so.
That is another issue :)
You can still use sysrq:
for sysrq in S U; do echo $sysrq > /proc/sysrq-trigger ;done
the look for "Emergency Sync complete" and "mergency Remount complete"
but sounds something paranoid.
Anyway, so that everyone is happy and friendly, I will use non-lazy
optionIts working fine.
In any case, the lazy umount looks useful for the general use case,
beyond archiso, if we can solve this.
Yes, at least I, this is what I know.
--
Gerardo Exequiel Pozzi
\cos^2\alpha + \sin^2\alpha = 1