Previously the mtab detector tried to detect whether it talks to
itself by comparing the control port of the translator it currently
visits with its own. This was done to prevent deadlocks. However, this
did not detect non-trivial loops, i.e. two mtab translators would
still dead-lock each other.
Previously the mtab content was generated in the open hook. Delay this
until the data is needed. A follow up patch will take advantage of
this to both simplify the logic in mtab_populate and make it more
robust at the same time.
* trans/mtab.c (open_hook): Do not eagerly populate the mtab.
* trans/mtab.c (main): Use ports_manage_port_operations_multithread.
---
trans/mtab.c | 10 +++---
1 file changed, 7 insertions(+), 3 deletions(-)
diff --git a/trans/mtab.c b/trans/mtab.c
index 5a5a07d..adfb345 100644
--- a/trans/mtab.c
+++ b/trans/mtab.c
@@ -235,9 +235,13 @@ main (int argc,
* trans/mtab.c (struct mtab): Add lock.
(open_hook): Initialize lock.
(close_hook): Destroy lock.
(trivfs_S_io_read): Lock mtab object, adjust error handling accordingly.
(trivfs_S_io_seek): Likewise.
(trivfs_S_io_readable): Likewise.
---
trans/mtab.c | 44
Traditionally, /proc/mounts includes only filesystem mount points.
Previously though, the mtab translator included any kind of
translator, like all /hurd/storeio translators. This causes problems
with umount --all as this would remove the passive translator records
from nodes in /dev.
Fix this
Detect passive translator startup and add the resulting active
translator to the list of active translators.
Note that newpi is properly deallocated in the function epilogue.
* libdiskfs/dir-lookup.c (diskfs_S_dir_lookup): Detect and register
passive translator startup.
---
Detect passive translator startup and add the resulting active
translator to the list of active translators.
* libnetfs/dir-lookup.c (netfs_S_dir_lookup): Detect and register
passive translator startup.
---
libnetfs/dir-lookup.c | 43 +--
1 file changed,
To detect if an active translator goes away, we need to register for
dead name notifications. Those notifications have to be sent to a port
known to the ports library, as the ports library handles the dead name
notifications. The most straight forward way is to use the port to the
underlying node
Ack
Justus Winter, le Sun 12 Jan 2014 20:08:40 +0100, a écrit :
* trans/mtab.c (struct mtab): Add lock.
(open_hook): Initialize lock.
(close_hook): Destroy lock.
(trivfs_S_io_read): Lock mtab object, adjust error handling accordingly.
(trivfs_S_io_seek): Likewise.
(trivfs_S_io_readable):
Justus Winter, le Sun 12 Jan 2014 20:08:39 +0100, a écrit :
Previously the mtab detector tried to detect whether it talks to
itself by comparing the control port of the translator it currently
visits with its own. This was done to prevent deadlocks. However, this
did not detect non-trivial
Ack
Justus Winter, le Sun 12 Jan 2014 20:08:41 +0100, a écrit :
* trans/mtab.c (main): Use ports_manage_port_operations_multithread.
---
trans/mtab.c | 10 +++---
1 file changed, 7 insertions(+), 3 deletions(-)
diff --git a/trans/mtab.c b/trans/mtab.c
index 5a5a07d..adfb345 100644
Justus Winter, le Sun 12 Jan 2014 20:08:38 +0100, a écrit :
Previously the mtab content was generated in the open hook. Delay this
until the data is needed. A follow up patch will take advantage of
this to both simplify the logic in mtab_populate and make it more
robust at the same time.
Ack.
Justus Winter, le Sun 12 Jan 2014 20:08:42 +0100, a écrit :
Traditionally, /proc/mounts includes only filesystem mount points.
Previously though, the mtab translator included any kind of
translator, like all /hurd/storeio translators. This causes problems
with umount --all as this would
Justus Winter, le Sun 12 Jan 2014 20:08:43 +0100, a écrit :
To detect if an active translator goes away, we need to register for
dead name notifications. Those notifications have to be sent to a port
known to the ports library, as the ports library handles the dead name
notifications. The most
Justus Winter, le Sun 12 Jan 2014 20:08:44 +0100, a écrit :
Detect passive translator startup and add the resulting active
translator to the list of active translators.
Note that newpi is properly deallocated in the function epilogue.
Ack.
* libdiskfs/dir-lookup.c (diskfs_S_dir_lookup):
Justus Winter, le Sun 12 Jan 2014 20:08:45 +0100, a écrit :
Detect passive translator startup and add the resulting active
translator to the list of active translators.
Ack.
* libnetfs/dir-lookup.c (netfs_S_dir_lookup): Detect and register
passive translator startup.
---
Hello,
Ignazio Sgalmuzzo, le Sat 04 Jan 2014 22:59:25 +, a écrit :
configure.ac: added check for libbz2
libstore/Makefile: linked libbz2
ext2fs/Makefile: linked libbz2
do-bunzip2.c: rewritten do_bunzip2 using libbz2 calls. Removed no longer
needed functions.
Cool :)
I guess you have
Assertions were added instead of silently returning from functions
on errors and private futexes were simplified.
This is one of the last versions. I won't be changing the base code,
except for fixing bugs if they are found, as this actually works as
expected. I'm little bit unsure about the
Hello Mr. Thibault,
thanks for the reply.
I guess you have tested this on a bz2-backed filesystem?
I tested with various size .bz2 files (to be clear: settrans -ca test
/hurd/storeio -T typed bunzip2:file:test.bz2).
Do I need to do another kind of tests? I'll be happy to check other
things
19 matches
Mail list logo