From 11b74e38761fd04b8ca2bf9a85bb55fbf4d202ea Mon Sep 17 00:00:00 2001 From: Thomas Schwinge Date: Sun, 27 Sep 2009 23:08:39 +0200 Subject: Move Viengoos projects into separate per-project pages. --- microkernel/viengoos/projects.mdwn | 58 ++-------------------- .../projects/address_space_management.mdwn | 40 +++++++++++++++ .../projects/capability-aware_compiler.mdwn | 16 ++++++ .../viengoos/projects/new_hash_function.mdwn | 19 +++++++ 4 files changed, 80 insertions(+), 53 deletions(-) create mode 100644 microkernel/viengoos/projects/address_space_management.mdwn create mode 100644 microkernel/viengoos/projects/capability-aware_compiler.mdwn create mode 100644 microkernel/viengoos/projects/new_hash_function.mdwn diff --git a/microkernel/viengoos/projects.mdwn b/microkernel/viengoos/projects.mdwn index 27dcc3e2..971206bb 100644 --- a/microkernel/viengoos/projects.mdwn +++ b/microkernel/viengoos/projects.mdwn @@ -8,58 +8,10 @@ Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled [[GNU Free Documentation License|/fdl]]."]]"""]] -[[!tag open_issue_viengoos]] - Some projects: -# Minor - -## New hash function - -The current hash function in libhurd-ihash results in a lot of -collisions when the hash table is 80% full. To overcome this, we keep -hash tables at most 30% full. This represents a fair amount of -overhead. Find a better algorithm. There can either be one that is -appropriate in the general case or one that works well in a relevant, -specific case, e.g., viengoos/object.c uses a hash to find the object -corresponding to a frame, which is keyed on its physical address. - -# Major - -## Address Space Management - -In Viengoos, a process's address space is managed entirely in user -space by the process itself. This creates two interesting problems: -dealing with circular dependencies resulting from having to manage the -address space data structures and accessing and manipulating the -address space data structures. - -First, managing the address space requires resources, which in turn -may require address space (e.g., data structures require memory which -require address space, etc.). We currently break this circular -dependency by trying to keep enough resources in reserve that -allocating resources for managing the address space never requires -more resources than are minimally in the reserve. The reserve is -currently chosen in an ad-hoc fashion. It would be nice to determine -it more systematically. Moreover, it would be nice to reduce the -cases in which a reserve is required. This may be possible by -restructuring some of the code. - -Second, the address space data structures are protected using a single -lock. This not only means that only a single thread can be updating -the address space at a time, but that if a thread faults and the -address space is locked, then the process dead locks! It should be -possible to at least walk the address space using lock-free -techniques. This requires updating the address space construction -code such that all addresses remain valid during any given -manipulation. Second, to avoid the mentioned dead-lock problem, we -try to ensure that accessing the data structures will never result in -a fault. This means protecting the stack. An alternative approach is -to use undo buffers. - -# Thesis - -## Capability aware compiler - -Modify, e.g., gcc to understand capability semantics and teach gcc how -to optimize it, e.g., how to batch and combine calls. +[[!inline +pages="microkernel/viengoos/projects/* and !microkernel/viengoos/projects/*/*" +show=0 +feeds=no +actions=yes]] diff --git a/microkernel/viengoos/projects/address_space_management.mdwn b/microkernel/viengoos/projects/address_space_management.mdwn new file mode 100644 index 00000000..2d00e4f4 --- /dev/null +++ b/microkernel/viengoos/projects/address_space_management.mdwn @@ -0,0 +1,40 @@ +[[!meta copyright="Copyright © 2008, 2009 Free Software Foundation, Inc."]] + +[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable +id="license" text="Permission is granted to copy, distribute and/or modify this +document under the terms of the GNU Free Documentation License, Version 1.2 or +any later version published by the Free Software Foundation; with no Invariant +Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license +is included in the section entitled [[GNU Free Documentation +License|/fdl]]."]]"""]] + +[[!tag open_issue_viengoos]] + +In Viengoos, a process's address space is managed entirely in user +space by the process itself. This creates two interesting problems: +dealing with circular dependencies resulting from having to manage the +address space data structures and accessing and manipulating the +address space data structures. + +First, managing the address space requires resources, which in turn +may require address space (e.g., data structures require memory which +require address space, etc.). We currently break this circular +dependency by trying to keep enough resources in reserve that +allocating resources for managing the address space never requires +more resources than are minimally in the reserve. The reserve is +currently chosen in an ad-hoc fashion. It would be nice to determine +it more systematically. Moreover, it would be nice to reduce the +cases in which a reserve is required. This may be possible by +restructuring some of the code. + +Second, the address space data structures are protected using a single +lock. This not only means that only a single thread can be updating +the address space at a time, but that if a thread faults and the +address space is locked, then the process dead locks! It should be +possible to at least walk the address space using lock-free +techniques. This requires updating the address space construction +code such that all addresses remain valid during any given +manipulation. Second, to avoid the mentioned dead-lock problem, we +try to ensure that accessing the data structures will never result in +a fault. This means protecting the stack. An alternative approach is +to use undo buffers. diff --git a/microkernel/viengoos/projects/capability-aware_compiler.mdwn b/microkernel/viengoos/projects/capability-aware_compiler.mdwn new file mode 100644 index 00000000..b4e465d9 --- /dev/null +++ b/microkernel/viengoos/projects/capability-aware_compiler.mdwn @@ -0,0 +1,16 @@ +[[!meta copyright="Copyright © 2008, 2009 Free Software Foundation, Inc."]] + +[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable +id="license" text="Permission is granted to copy, distribute and/or modify this +document under the terms of the GNU Free Documentation License, Version 1.2 or +any later version published by the Free Software Foundation; with no Invariant +Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license +is included in the section entitled +[[GNU Free Documentation License|/fdl]]."]]"""]] + +[[!tag open_issue_viengoos]] + +Modify, e.g., gcc to understand capability semantics and teach gcc how +to optimize it, e.g., how to batch and combine calls. + +This project is deemed suitable for a thesis. diff --git a/microkernel/viengoos/projects/new_hash_function.mdwn b/microkernel/viengoos/projects/new_hash_function.mdwn new file mode 100644 index 00000000..1747511d --- /dev/null +++ b/microkernel/viengoos/projects/new_hash_function.mdwn @@ -0,0 +1,19 @@ +[[!meta copyright="Copyright © 2008, 2009 Free Software Foundation, Inc."]] + +[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable +id="license" text="Permission is granted to copy, distribute and/or modify this +document under the terms of the GNU Free Documentation License, Version 1.2 or +any later version published by the Free Software Foundation; with no Invariant +Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license +is included in the section entitled [[GNU Free Documentation +License|/fdl]]."]]"""]] + +[[!tag open_issue_viengoos]] + +The current hash function in libhurd-ihash results in a lot of +collisions when the hash table is 80% full. To overcome this, we keep +hash tables at most 30% full. This represents a fair amount of +overhead. Find a better algorithm. There can either be one that is +appropriate in the general case or one that works well in a relevant, +specific case, e.g., viengoos/object.c uses a hash to find the object +corresponding to a frame, which is keyed on its physical address. -- cgit v1.2.3 From 15553aa7a5351595f20523d96a8ed7af9cc0b0d3 Mon Sep 17 00:00:00 2001 From: Thomas Schwinge Date: Sun, 27 Sep 2009 23:55:17 +0200 Subject: Attribute Google, and other minor changes. --- contributing.mdwn | 2 +- news/2009-08-30.mdwn | 9 ++++----- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/contributing.mdwn b/contributing.mdwn index dc7fcc89..12be38aa 100644 --- a/contributing.mdwn +++ b/contributing.mdwn @@ -23,7 +23,7 @@ one of the [[regular_IRC_meetings|IRC#regular_meetings]]! Generally we also have a list of [[open_issues]] and one for [[project_ideas|community/gsoc/project_ideas]] - the latter written for the -Summer of Code. +Google Summer of Code. # Documentation diff --git a/news/2009-08-30.mdwn b/news/2009-08-30.mdwn index 8b28b410..b696f7a2 100644 --- a/news/2009-08-30.mdwn +++ b/news/2009-08-30.mdwn @@ -12,21 +12,20 @@ License|/fdl]]."]]"""]] [[!meta updated="2009-09-01 00:00 UTC"]] -A month of the Hurd: *Successful Summer of Code: unionmount*. +A month of the Hurd: *Successful Google Summer of Code project: unionmount*. [[!if test="included()" then="""[[!toggle id=full_news text="Details."]][[!toggleable id=full_news text="[[!paste id=full_news]]"]]""" else="[[!paste id=full_news]]"]] [[!cut id="full_news" text=""" > This month saw the successful pencils down of the Google Summer of Code 2009, -> for which [[Sergiu_Ivanov|user/scolobb]] created a +> for which [[Sergiu Ivanov|scolobb]] created a > [[unionmount_translator|hurd/translator/unionmount]]. > His work allows you to simply union one directory or translator into another one, > so you see the files of both of them side by side. > > He was mentored by Olaf Buddenhagen and both are now working on polishing the code -> and extending the namespace based translator selection (nsmux) which allows you to -> read a node with a selected translator by simply appending ",,<translator>" to its name. +> and extending the namespace based translator selection ([[hurd/translator/nsmux]]) which allows you to +> read a node with a selected translator by simply appending `,,` to its name. > - """]] -- cgit v1.2.3 From 6acf2fd98e481685498dcfa4ab8f9ff287bc37be Mon Sep 17 00:00:00 2001 From: Sergiu Ivanov Date: Mon, 28 Sep 2009 15:54:03 +0300 Subject: Update user/scolobb. --- user/scolobb.mdwn | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/user/scolobb.mdwn b/user/scolobb.mdwn index 9044e278..d64ac133 100644 --- a/user/scolobb.mdwn +++ b/user/scolobb.mdwn @@ -23,6 +23,11 @@ tree of the node the translator is mounted onto. For documentation, see [[hurd/translator/unionmount]]. +At the Final Evaluation, this project was given a passing evaluation +by **antrik**. This means that the union-mount functionality is +working and has been tested normally to collaborate with +`eth-multiplexer`. + --- ## Roadmap @@ -195,14 +200,6 @@ For documentation, see [[hurd/translator/unionmount]]. filesystem will not obscure the `unionfs`'s one because the mountee is *not attached* to the root node. -### TODO - -(Dates in brackets show the *expected* completion date) - -* **Wrap up the project for upstream inclusion.** *(28 Aug)* - `unionmount` is intended to be included upstream, therefore it - should be mostly complete and polished by the end of GSoC. - --- # Google Summer of Code: 2008 Project: Namespace-based translator selection -- cgit v1.2.3 From 127340741f01e7984aa48b637946b79e334b78b4 Mon Sep 17 00:00:00 2001 From: Sergiu Ivanov Date: Mon, 28 Sep 2009 18:08:36 +0300 Subject: Add the short documentation of unionmount. --- hurd/translator/unionfs.mdwn | 125 ++++++++++++++++++++++++++++++++++++++-- hurd/translator/unionmount.mdwn | 51 +--------------- 2 files changed, 122 insertions(+), 54 deletions(-) diff --git a/hurd/translator/unionfs.mdwn b/hurd/translator/unionfs.mdwn index b177b874..93a3a385 100644 --- a/hurd/translator/unionfs.mdwn +++ b/hurd/translator/unionfs.mdwn @@ -8,18 +8,135 @@ Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled [[GNU Free Documentation License|/fdl]]."]]"""]] +# `unionfs` + Source repository: +# `unionmount` + +... is a special mode of `unionfs`. + +## Project Idea + +When setting a translator on Hurd -- similar to mounting a file system on UNIX +-- the new node(s) exported by the translator are obscuring the original node +where the translator is set, and any nodes below it in the directory tree. The +translator itself can access the underlying node (which is a very nice feature, +as it allows translators presenting the contents of the node in a different +format); but it's no longer accessible from the "outside". + +Plan9 has a feature where a file system can be mounted in union mode: the new +file system doesn't obscure the mount point in this case, but instead the +contents are combined. (This feature has also been under discussion in Linux +for a couple of years now, under the label "VFS-based union mounts".) + +This kind of union mounts is generally useful, as it's sometimes more +convenient than unioning existing filesystem locations with unionfs -- it's not +necessary to mount a file system that is to be unioned at some external +location first: just union-mount it directly at the target location. + +But union mounts also allow creating passive translator hierarchies: If there +is a passive translator on a parent node, and further passive translators on +child nodes, the union mount allows the child nodes with the further translator +settings still to be visible after the parent translator has started. + +This could be useful for device nodes for example: let's say we have an +ethernet multiplexer at /dev/veth. Now the virtual subnodes could all be +directly under /dev, i.e. /dev/veth0, /dev/veth1 etc., and explicitely refer to +the main /dev/veth node in the translator command line. It would be more +elegant however to store the virtual nodes direcly below the main multiplexer +node -- /dev/veth/0, /dev/veth/1 etc. + +There are two possible approaches how union mounts could be implemented in the +Hurd. The first one is to let the various translators handle union mounts +internally, i.e. let them present the underlying nodes to the clients in +addition to the actual nodes they export themselfs. This probably can be +implemented as some kind of extension to the existing netfs and diskfs +libraries. + +The other possible apporach is less efficient and probably more tricky, but +probably also more generic: create a special unionmount translator, which +serves as a kind of proxy: setting the union-mounted translator on some +internal node; and at the actual mount location, presenting a union of the +nodes exported by this translator, and the nodes from the underlying file +system. + +The goal of this project is implementing union mounts using either of the +approaches described above. (Though it might be useful initially to prototype +both for comparision.) The ethernet multiplexer shall serve as an example use +case -- any changes necessary to allow using it with the union mount +functionality are also to be considered part of the task. + +## Implementation + +### Source + +Union mounts are currently implemented as two additional command line +options of the `unionfs` translator. This implementation resides in +the master-unionmount branch of the unionfs git repository. To +checkout the code, do the following: + + $ git clone git://git.sv.gnu.org/hurd/unionfs.git + $ cd unionfs + $ git checkout -b master-unionmount + $ git pull origin master-unionmount + +You can skip the checkout step if you don't mind that the +`master-unionmount` branch gets merged into the `master` branch. + +### Short Documentation + +The `unionmount` project adds options "--mount" and "--no-mount" to +`unionfs` (short versions: "-t" and "-n" correspondingly). Both +options are used to implement union-mounting, but the first option +will create a *transparent* union mount, while the second option will +create a *nontransparent* union mount. + +One can create a transparent union mount with the following command: + + $ settrans -a unionfs --underlying --mount= + +When running + + $ fsysopts + +one will see the information about the ``, not the +`unionfs` translator. Although this might seem the only natural way +to do union mounts, one must keep in mind that such transparency +deprives one of the possibility to modify the unioned virtual +filesystem exported by `unionfs` at run-time (via `fsysopts`). + +One can create a nontransparent union mount with the following command: + + $ settrans -a unionfs --underlying --no-mount= + +When running + + $ fsysopts + +one will see the information about the `unionfs` translator. Although +this way allows modifying the contents of the unioned filesystem +exported by `unionfs` at runtime, the access to `` is +blocked. + +The filesystem exported by the *mountee* (``) is actually +treated like a normal filesystem within `unionfs`, which means that +one can assign priorities to the *mountee* to achieve the desired +order of layering of the unioned directories. The following will make +`unionfs` query the underlying filesystem first and then the +*mountee*: + + $ settrans -a unionfs --priority=2 --underlying --priority=1 --mount= + +Note that the same functionality can also be achieved by assigning +priority 1 to the underlying filesystem and keeping the priority of +the *mountee* at 0. # `stowfs` ... is a special mode of `unionfs`. -# See Also - - * [[unionmount]] - # External Links * [*Unioning file systems for Linux*](http://valerieaurora.org/union/) diff --git a/hurd/translator/unionmount.mdwn b/hurd/translator/unionmount.mdwn index 47a3d85d..65f09719 100644 --- a/hurd/translator/unionmount.mdwn +++ b/hurd/translator/unionmount.mdwn @@ -8,53 +8,4 @@ Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled [[GNU Free Documentation License|/fdl]]."]]"""]] -[[!meta title="Union Mounts"]] - -When setting a translator on Hurd -- similar to mounting a file system on UNIX --- the new node(s) exported by the translator are obscuring the original node -where the translator is set, and any nodes below it in the directory tree. The -translator itself can access the underlying node (which is a very nice feature, -as it allows translators presenting the contents of the node in a different -format); but it's no longer accessible from the "outside". - -Plan9 has a feature where a file system can be mounted in union mode: the new -file system doesn't obscure the mount point in this case, but instead the -contents are combined. (This feature has also been under discussion in Linux -for a couple of years now, under the label "VFS-based union mounts".) - -This kind of union mounts is generally useful, as it's sometimes more -convenient than unioning existing filesystem locations with unionfs -- it's not -necessary to mount a file system that is to be unioned at some external -location first: just union-mount it directly at the target location. - -But union mounts also allow creating passive translator hierarchies: If there -is a passive translator on a parent node, and further passive translators on -child nodes, the union mount allows the child nodes with the further translator -settings still to be visible after the parent translator has started. - -This could be useful for device nodes for example: let's say we have an -ethernet multiplexer at /dev/veth. Now the virtual subnodes could all be -directly under /dev, i.e. /dev/veth0, /dev/veth1 etc., and explicitely refer to -the main /dev/veth node in the translator command line. It would be more -elegant however to store the virtual nodes direcly below the main multiplexer -node -- /dev/veth/0, /dev/veth/1 etc. - -There are two possible approaches how union mounts could be implemented in the -Hurd. The first one is to let the various translators handle union mounts -internally, i.e. let them present the underlying nodes to the clients in -addition to the actual nodes they export themselfs. This probably can be -implemented as some kind of extension to the existing netfs and diskfs -libraries. - -The other possible apporach is less efficient and probably more tricky, but -probably also more generic: create a special unionmount translator, which -serves as a kind of proxy: setting the union-mounted translator on some -internal node; and at the actual mount location, presenting a union of the -nodes exported by this translator, and the nodes from the underlying file -system. - -The goal of this project is implementing union mounts using either of the -approaches described above. (Though it might be useful initially to prototype -both for comparision.) The ethernet multiplexer shall serve as an example use -case -- any changes necessary to allow using it with the union mount -functionality are also to be considered part of the task. +[[!meta redir=unionfs]] -- cgit v1.2.3 From ed59faf772c24131e60444392b3cadcb9f6cb473 Mon Sep 17 00:00:00 2001 From: Sergiu Ivanov Date: Mon, 28 Sep 2009 18:18:18 +0300 Subject: Add a warning about the problem with syncing in unionfs. --- hurd/translator/unionfs.mdwn | 3 +++ 1 file changed, 3 insertions(+) diff --git a/hurd/translator/unionfs.mdwn b/hurd/translator/unionfs.mdwn index 93a3a385..407fa134 100644 --- a/hurd/translator/unionfs.mdwn +++ b/hurd/translator/unionfs.mdwn @@ -12,6 +12,9 @@ is included in the section entitled Source repository: +Right now there are some problems with syncing, so please be aware +that it might not work as expected. + # `unionmount` ... is a special mode of `unionfs`. -- cgit v1.2.3 From 50c7e9a04d56c712f35d7bb4318eac6d93297c11 Mon Sep 17 00:00:00 2001 From: Arne Babenhauserheide Date: Tue, 29 Sep 2009 08:07:56 +0200 Subject: Moved month of the Hurd 2009-08 to month of the Hurd 2009-09. --HG-- rename : news/2009-08-30.mdwn => news/2009-09-31.mdwn --- news/2009-08-30.mdwn | 31 ------------------------------- news/2009-09-31.mdwn | 13 ++++++++++--- 2 files changed, 10 insertions(+), 34 deletions(-) delete mode 100644 news/2009-08-30.mdwn diff --git a/news/2009-08-30.mdwn b/news/2009-08-30.mdwn deleted file mode 100644 index b696f7a2..00000000 --- a/news/2009-08-30.mdwn +++ /dev/null @@ -1,31 +0,0 @@ -[[!meta copyright="Copyright © 2009 Free Software Foundation, Inc."]] - -[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable -id="license" text="Permission is granted to copy, distribute and/or modify this -document under the terms of the GNU Free Documentation License, Version 1.2 or -any later version published by the Free Software Foundation; with no Invariant -Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license -is included in the section entitled [[GNU Free Documentation -License|/fdl]]."]]"""]] - -[[!meta date="2009-09-01 00:00 UTC"]] - -[[!meta updated="2009-09-01 00:00 UTC"]] - -A month of the Hurd: *Successful Google Summer of Code project: unionmount*. -[[!if test="included()" then="""[[!toggle id=full_news -text="Details."]][[!toggleable id=full_news text="[[!paste id=full_news]]"]]""" -else="[[!paste id=full_news]]"]] - -[[!cut id="full_news" text=""" -> This month saw the successful pencils down of the Google Summer of Code 2009, -> for which [[Sergiu Ivanov|scolobb]] created a -> [[unionmount_translator|hurd/translator/unionmount]]. -> His work allows you to simply union one directory or translator into another one, -> so you see the files of both of them side by side. -> -> He was mentored by Olaf Buddenhagen and both are now working on polishing the code -> and extending the namespace based translator selection ([[hurd/translator/nsmux]]) which allows you to -> read a node with a selected translator by simply appending `,,` to its name. -> -"""]] diff --git a/news/2009-09-31.mdwn b/news/2009-09-31.mdwn index 04fdedb2..b696f7a2 100644 --- a/news/2009-09-31.mdwn +++ b/news/2009-09-31.mdwn @@ -12,13 +12,20 @@ License|/fdl]]."]]"""]] [[!meta updated="2009-09-01 00:00 UTC"]] -A month of the Hurd: ... . +A month of the Hurd: *Successful Google Summer of Code project: unionmount*. [[!if test="included()" then="""[[!toggle id=full_news text="Details."]][[!toggleable id=full_news text="[[!paste id=full_news]]"]]""" else="[[!paste id=full_news]]"]] [[!cut id="full_news" text=""" -> This month ... +> This month saw the successful pencils down of the Google Summer of Code 2009, +> for which [[Sergiu Ivanov|scolobb]] created a +> [[unionmount_translator|hurd/translator/unionmount]]. +> His work allows you to simply union one directory or translator into another one, +> so you see the files of both of them side by side. +> +> He was mentored by Olaf Buddenhagen and both are now working on polishing the code +> and extending the namespace based translator selection ([[hurd/translator/nsmux]]) which allows you to +> read a node with a selected translator by simply appending `,,` to its name. > - """]] -- cgit v1.2.3 From fc5b550eda18df46adef1447edf8833f586ab438 Mon Sep 17 00:00:00 2001 From: Arne Babenhauserheide Date: Tue, 29 Sep 2009 08:14:06 +0200 Subject: News fix: GSoC was completed in 09. --- news/2009-09-31.mdwn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/news/2009-09-31.mdwn b/news/2009-09-31.mdwn index b696f7a2..5cf7aac9 100644 --- a/news/2009-09-31.mdwn +++ b/news/2009-09-31.mdwn @@ -18,7 +18,7 @@ text="Details."]][[!toggleable id=full_news text="[[!paste id=full_news]]"]]""" else="[[!paste id=full_news]]"]] [[!cut id="full_news" text=""" -> This month saw the successful pencils down of the Google Summer of Code 2009, +> This month saw the successful completion of the Google Summer of Code 2009, > for which [[Sergiu Ivanov|scolobb]] created a > [[unionmount_translator|hurd/translator/unionmount]]. > His work allows you to simply union one directory or translator into another one, -- cgit v1.2.3 From 88fb87ccf1f02e3976508e6c2d2fb57c0775868b Mon Sep 17 00:00:00 2001 From: Arne Babenhauserheide Date: Tue, 29 Sep 2009 08:24:54 +0200 Subject: mailing_lists: Added a note to bug-hurd (contributors here) and help-hurd (usget help on using it) to make them stand out a bit more - otehrwise it's hard to decide where to ask. --- mailing_lists.mdwn | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mailing_lists.mdwn b/mailing_lists.mdwn index d64582b8..e4bd1368 100644 --- a/mailing_lists.mdwn +++ b/mailing_lists.mdwn @@ -44,7 +44,7 @@ mailing lists. -Technical discussion and bug reports; main development list. +Technical discussion and bug reports; main development list. If you want to **contribute**, please meet us here. ## hurd-devel @@ -68,7 +68,7 @@ to the latter, everyone is free to subscribe to this read-only list. -Hurd-specific questions; for users of the Hurd. +Hurd-specific questions; for users of the Hurd. If you need help on **using the Hurd** please ask in this list. ## web-hurd -- cgit v1.2.3 From 93ff33abc6c96b5d528030a2fc438b458846ae47 Mon Sep 17 00:00:00 2001 From: Arne Babenhauserheide Date: Tue, 29 Sep 2009 08:35:11 +0200 Subject: unionfs: Added a short note what it does. --- hurd/translator/unionfs.mdwn | 2 ++ 1 file changed, 2 insertions(+) diff --git a/hurd/translator/unionfs.mdwn b/hurd/translator/unionfs.mdwn index 407fa134..42ecdce7 100644 --- a/hurd/translator/unionfs.mdwn +++ b/hurd/translator/unionfs.mdwn @@ -10,6 +10,8 @@ is included in the section entitled # `unionfs` +*Unionfs allows you to simply union one directory or translator into another one, so you see the files of both of them side by side.* + Source repository: Right now there are some problems with syncing, so please be aware -- cgit v1.2.3 From 50845c8ca740ce1609d24c8e17dc8196e53aed40 Mon Sep 17 00:00:00 2001 From: Thomas Schwinge Date: Tue, 29 Sep 2009 21:05:47 +0200 Subject: Tiny improvement w.r.t. unionmount redir. --- hurd/translator.mdwn | 1 - hurd/translator/unionfs.mdwn | 1 + hurd/translator/unionmount.mdwn | 2 +- 3 files changed, 2 insertions(+), 2 deletions(-) diff --git a/hurd/translator.mdwn b/hurd/translator.mdwn index 4995a005..ea420a72 100644 --- a/hurd/translator.mdwn +++ b/hurd/translator.mdwn @@ -73,7 +73,6 @@ Read about translator [[short-circuiting]]. * [[cvsfs]] * [[tmpfs]] * [[procfs]] -* [[unionmount]] * ... diff --git a/hurd/translator/unionfs.mdwn b/hurd/translator/unionfs.mdwn index 42ecdce7..331ad19f 100644 --- a/hurd/translator/unionfs.mdwn +++ b/hurd/translator/unionfs.mdwn @@ -17,6 +17,7 @@ Source repository: Right now there are some problems with syncing, so please be aware that it might not work as expected. + # `unionmount` ... is a special mode of `unionfs`. diff --git a/hurd/translator/unionmount.mdwn b/hurd/translator/unionmount.mdwn index 65f09719..7384afc7 100644 --- a/hurd/translator/unionmount.mdwn +++ b/hurd/translator/unionmount.mdwn @@ -8,4 +8,4 @@ Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled [[GNU Free Documentation License|/fdl]]."]]"""]] -[[!meta redir=unionfs]] +[[!meta redir=unionfs#unionmount]] -- cgit v1.2.3 From f442694a9ede423aeca68935b0b2679640254f12 Mon Sep 17 00:00:00 2001 From: Sergiu Ivanov Date: Wed, 30 Sep 2009 18:08:55 +0300 Subject: Added some information about nsmux. --- hurd/translator.mdwn | 1 + hurd/translator/writing/nsmux.mdwn | 106 +++++++++++++++++++++++++++++++++++++ 2 files changed, 107 insertions(+) create mode 100644 hurd/translator/writing/nsmux.mdwn diff --git a/hurd/translator.mdwn b/hurd/translator.mdwn index ea420a72..cfb1f7db 100644 --- a/hurd/translator.mdwn +++ b/hurd/translator.mdwn @@ -73,6 +73,7 @@ Read about translator [[short-circuiting]]. * [[cvsfs]] * [[tmpfs]] * [[procfs]] +* [[nsmux|translator/writing/nsmux]] * ... diff --git a/hurd/translator/writing/nsmux.mdwn b/hurd/translator/writing/nsmux.mdwn new file mode 100644 index 00000000..735c1fde --- /dev/null +++ b/hurd/translator/writing/nsmux.mdwn @@ -0,0 +1,106 @@ +[[!meta copyright="Copyright © 2009 Free Software Foundation, Inc."]] + +[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable +id="license" text="Permission is granted to copy, distribute and/or modify this +document under the terms of the GNU Free Documentation License, Version 1.2 or +any later version published by the Free Software Foundation; with no Invariant +Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license +is included in the section entitled +[[GNU Free Documentation License|/fdl]]."]]"""]] + +# nsmux + +`nsmux` implements the simplest use-case of namespace-based translator +selection (see below). + +## Source + +`nsmux` translator can be obtained with the following command: + + $ git clone git://github.com/scolobb/nsmux.git + +`filter` translator can be obtained with the following command: + + $ git clone git://github.com/scolobb/filter.git + +The filter is not yet working. + +It is highly probable that soon the code will be moved to Savannah. + +## Namespace-based Translator Selection + +Namespace-based translator selection is the special technique of using +"magic" filenames for both accessing the file and setting translators +on it. + +A "magic" filename is a filename which contains an unescaped sequence +of two commas: ",,". This sequence can be escaped by adding another +comma: ",,,". In the magic filename the part up to the first double +commas is interpreted as the filename itself; the remaining segments +into which the string is split by occurrences of ",," are treated as +names of translators located under `/hurd/`. + +The simplest advantage before traditional way of setting +translators is shown in the following examples. Compare this + + $ settrans -a file translator1 + $ settrans -a file translator2 + $ cat file + +to this: + + $ cat file,,translator1,,translator2 + +One simple command versus three more lengthy ones is an obvious +improvement. However, this advantage is not the only one and, +probably, not even the most important. + +What is a good candidate for the most important advantage is that +translators requested via "magic" filenames are session-bound. In +other words, by running `cat file,,translator` we set a translator +visible *only* to `cat`, while the original file remains untranslated. +Such session-specific translators are called **dynamic** and there is +no (theoretical) way for a client to get a port to a dynamic +translator requested by another client. + +Obviously, dynamic translators can be stacked, similarly to static +translators. Also, dynamic translator stacks may reside on top of +static translator stacks. + +An important operation of namespace-based translator selection is +*filtering*. Filtering basically consists in looking up a translator +by name in the stack and ignoring translators located on top of it. +Note that filtering does not mean dropping some translators: in the +current implementation a filter is expected to be a normal dynamic +translator, included in the dynamic translator stack similarly to +other translators. + +An important detail is that filtering is not limited to dynamic +translator stacks: a filter should be able to descend into static +translator stacks as well. + +Although the concept of filtering may seem purely abstract in the +simplest use-case of setting dynamic translators on top of files, the +situation changes greatly when dynamic translator stacks on top of +directories are considered. In this case, the implementation of +namespace-based translator selection is expected to be able to +propagate the dynamic translators associated with the directory down +the directory structure. That is, all files located under a directory +opened with magic syntax, are expected to be translated by the same +set of translators. In this case having the possibility to +specifically discard some of the translators set up on top of certain +files is very useful. + +Note that the implementation of propagation of dynamic translators +down directories is not fully conceived at the moment. The +fundamental problem is distinguishing between situations when the +dynamic translators are to be set on the underlying files of the +directory or on the directory itself. + +## Currently Implemented + +Currently there a working (though not heavily tested) implementation +of the simplest use-case of namespace-based translator selection in +the form of translator `nsmux`. The filter is partially implemented +and this is the immediate goal. Propagating translators down +directories is the next objective. -- cgit v1.2.3 From 1ee04b164bb6c593387500bbf2b0dabeef3a9d36 Mon Sep 17 00:00:00 2001 From: Sergiu Ivanov Date: Wed, 30 Sep 2009 19:33:28 +0300 Subject: Add the usage information about nsmux. --- hurd/translator/writing/nsmux.mdwn | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/hurd/translator/writing/nsmux.mdwn b/hurd/translator/writing/nsmux.mdwn index 735c1fde..c07a30bd 100644 --- a/hurd/translator/writing/nsmux.mdwn +++ b/hurd/translator/writing/nsmux.mdwn @@ -13,6 +13,17 @@ is included in the section entitled `nsmux` implements the simplest use-case of namespace-based translator selection (see below). +To use `nsmux` do the following: + + $ settrans -a nsmux + +After this operation `` will be a mirror of `` with +namespace-based translator selection functionality enabled. + +Please note that due to some details `nsmux` may complain a lot when +run as a normal user. This matter is the most urgent on the TODO +list. + ## Source `nsmux` translator can be obtained with the following command: -- cgit v1.2.3 From f85b511c46e479410f310d0763cc8fc4fb79326b Mon Sep 17 00:00:00 2001 From: Thomas Schwinge Date: Thu, 1 Oct 2009 09:05:16 +0200 Subject: Put nsmux in line with the other translator pages. --- community/gsoc/2008.mdwn | 3 +- hurd/translator.mdwn | 2 +- hurd/translator/nsmux.mdwn | 117 +++++++++++++++++++++++++++++++++++++ hurd/translator/writing/nsmux.mdwn | 117 ------------------------------------- 4 files changed, 120 insertions(+), 119 deletions(-) create mode 100644 hurd/translator/nsmux.mdwn delete mode 100644 hurd/translator/writing/nsmux.mdwn diff --git a/community/gsoc/2008.mdwn b/community/gsoc/2008.mdwn index d7b467bb..d994f2b0 100644 --- a/community/gsoc/2008.mdwn +++ b/community/gsoc/2008.mdwn @@ -23,7 +23,8 @@ did a great job! vacation). The project however was hampered by various misunderstandings, wrong assumptions, and several major redesigns during the course of the work -- which is probably more our fault than the student's. In the end, though, he - completed nsmux (the main namespace proxy handling the magic filename + completed [[hurd/translator/nsmux]] (the main namespace proxy handling the + magic filename lookups, running dynamic translators on demand); he still works on finishing the translator stack filtering necessary to implement some of the desired functionality (accessing files while skipping existing translators). diff --git a/hurd/translator.mdwn b/hurd/translator.mdwn index cfb1f7db..158f53d7 100644 --- a/hurd/translator.mdwn +++ b/hurd/translator.mdwn @@ -73,7 +73,7 @@ Read about translator [[short-circuiting]]. * [[cvsfs]] * [[tmpfs]] * [[procfs]] -* [[nsmux|translator/writing/nsmux]] +* [[nsmux]] * ... diff --git a/hurd/translator/nsmux.mdwn b/hurd/translator/nsmux.mdwn new file mode 100644 index 00000000..c07a30bd --- /dev/null +++ b/hurd/translator/nsmux.mdwn @@ -0,0 +1,117 @@ +[[!meta copyright="Copyright © 2009 Free Software Foundation, Inc."]] + +[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable +id="license" text="Permission is granted to copy, distribute and/or modify this +document under the terms of the GNU Free Documentation License, Version 1.2 or +any later version published by the Free Software Foundation; with no Invariant +Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license +is included in the section entitled +[[GNU Free Documentation License|/fdl]]."]]"""]] + +# nsmux + +`nsmux` implements the simplest use-case of namespace-based translator +selection (see below). + +To use `nsmux` do the following: + + $ settrans -a nsmux + +After this operation `` will be a mirror of `` with +namespace-based translator selection functionality enabled. + +Please note that due to some details `nsmux` may complain a lot when +run as a normal user. This matter is the most urgent on the TODO +list. + +## Source + +`nsmux` translator can be obtained with the following command: + + $ git clone git://github.com/scolobb/nsmux.git + +`filter` translator can be obtained with the following command: + + $ git clone git://github.com/scolobb/filter.git + +The filter is not yet working. + +It is highly probable that soon the code will be moved to Savannah. + +## Namespace-based Translator Selection + +Namespace-based translator selection is the special technique of using +"magic" filenames for both accessing the file and setting translators +on it. + +A "magic" filename is a filename which contains an unescaped sequence +of two commas: ",,". This sequence can be escaped by adding another +comma: ",,,". In the magic filename the part up to the first double +commas is interpreted as the filename itself; the remaining segments +into which the string is split by occurrences of ",," are treated as +names of translators located under `/hurd/`. + +The simplest advantage before traditional way of setting +translators is shown in the following examples. Compare this + + $ settrans -a file translator1 + $ settrans -a file translator2 + $ cat file + +to this: + + $ cat file,,translator1,,translator2 + +One simple command versus three more lengthy ones is an obvious +improvement. However, this advantage is not the only one and, +probably, not even the most important. + +What is a good candidate for the most important advantage is that +translators requested via "magic" filenames are session-bound. In +other words, by running `cat file,,translator` we set a translator +visible *only* to `cat`, while the original file remains untranslated. +Such session-specific translators are called **dynamic** and there is +no (theoretical) way for a client to get a port to a dynamic +translator requested by another client. + +Obviously, dynamic translators can be stacked, similarly to static +translators. Also, dynamic translator stacks may reside on top of +static translator stacks. + +An important operation of namespace-based translator selection is +*filtering*. Filtering basically consists in looking up a translator +by name in the stack and ignoring translators located on top of it. +Note that filtering does not mean dropping some translators: in the +current implementation a filter is expected to be a normal dynamic +translator, included in the dynamic translator stack similarly to +other translators. + +An important detail is that filtering is not limited to dynamic +translator stacks: a filter should be able to descend into static +translator stacks as well. + +Although the concept of filtering may seem purely abstract in the +simplest use-case of setting dynamic translators on top of files, the +situation changes greatly when dynamic translator stacks on top of +directories are considered. In this case, the implementation of +namespace-based translator selection is expected to be able to +propagate the dynamic translators associated with the directory down +the directory structure. That is, all files located under a directory +opened with magic syntax, are expected to be translated by the same +set of translators. In this case having the possibility to +specifically discard some of the translators set up on top of certain +files is very useful. + +Note that the implementation of propagation of dynamic translators +down directories is not fully conceived at the moment. The +fundamental problem is distinguishing between situations when the +dynamic translators are to be set on the underlying files of the +directory or on the directory itself. + +## Currently Implemented + +Currently there a working (though not heavily tested) implementation +of the simplest use-case of namespace-based translator selection in +the form of translator `nsmux`. The filter is partially implemented +and this is the immediate goal. Propagating translators down +directories is the next objective. diff --git a/hurd/translator/writing/nsmux.mdwn b/hurd/translator/writing/nsmux.mdwn deleted file mode 100644 index c07a30bd..00000000 --- a/hurd/translator/writing/nsmux.mdwn +++ /dev/null @@ -1,117 +0,0 @@ -[[!meta copyright="Copyright © 2009 Free Software Foundation, Inc."]] - -[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable -id="license" text="Permission is granted to copy, distribute and/or modify this -document under the terms of the GNU Free Documentation License, Version 1.2 or -any later version published by the Free Software Foundation; with no Invariant -Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license -is included in the section entitled -[[GNU Free Documentation License|/fdl]]."]]"""]] - -# nsmux - -`nsmux` implements the simplest use-case of namespace-based translator -selection (see below). - -To use `nsmux` do the following: - - $ settrans -a nsmux - -After this operation `` will be a mirror of `` with -namespace-based translator selection functionality enabled. - -Please note that due to some details `nsmux` may complain a lot when -run as a normal user. This matter is the most urgent on the TODO -list. - -## Source - -`nsmux` translator can be obtained with the following command: - - $ git clone git://github.com/scolobb/nsmux.git - -`filter` translator can be obtained with the following command: - - $ git clone git://github.com/scolobb/filter.git - -The filter is not yet working. - -It is highly probable that soon the code will be moved to Savannah. - -## Namespace-based Translator Selection - -Namespace-based translator selection is the special technique of using -"magic" filenames for both accessing the file and setting translators -on it. - -A "magic" filename is a filename which contains an unescaped sequence -of two commas: ",,". This sequence can be escaped by adding another -comma: ",,,". In the magic filename the part up to the first double -commas is interpreted as the filename itself; the remaining segments -into which the string is split by occurrences of ",," are treated as -names of translators located under `/hurd/`. - -The simplest advantage before traditional way of setting -translators is shown in the following examples. Compare this - - $ settrans -a file translator1 - $ settrans -a file translator2 - $ cat file - -to this: - - $ cat file,,translator1,,translator2 - -One simple command versus three more lengthy ones is an obvious -improvement. However, this advantage is not the only one and, -probably, not even the most important. - -What is a good candidate for the most important advantage is that -translators requested via "magic" filenames are session-bound. In -other words, by running `cat file,,translator` we set a translator -visible *only* to `cat`, while the original file remains untranslated. -Such session-specific translators are called **dynamic** and there is -no (theoretical) way for a client to get a port to a dynamic -translator requested by another client. - -Obviously, dynamic translators can be stacked, similarly to static -translators. Also, dynamic translator stacks may reside on top of -static translator stacks. - -An important operation of namespace-based translator selection is -*filtering*. Filtering basically consists in looking up a translator -by name in the stack and ignoring translators located on top of it. -Note that filtering does not mean dropping some translators: in the -current implementation a filter is expected to be a normal dynamic -translator, included in the dynamic translator stack similarly to -other translators. - -An important detail is that filtering is not limited to dynamic -translator stacks: a filter should be able to descend into static -translator stacks as well. - -Although the concept of filtering may seem purely abstract in the -simplest use-case of setting dynamic translators on top of files, the -situation changes greatly when dynamic translator stacks on top of -directories are considered. In this case, the implementation of -namespace-based translator selection is expected to be able to -propagate the dynamic translators associated with the directory down -the directory structure. That is, all files located under a directory -opened with magic syntax, are expected to be translated by the same -set of translators. In this case having the possibility to -specifically discard some of the translators set up on top of certain -files is very useful. - -Note that the implementation of propagation of dynamic translators -down directories is not fully conceived at the moment. The -fundamental problem is distinguishing between situations when the -dynamic translators are to be set on the underlying files of the -directory or on the directory itself. - -## Currently Implemented - -Currently there a working (though not heavily tested) implementation -of the simplest use-case of namespace-based translator selection in -the form of translator `nsmux`. The filter is partially implemented -and this is the immediate goal. Propagating translators down -directories is the next objective. -- cgit v1.2.3 From befe9cf830c8561b0cc267f143eb3aeea1e0f14b Mon Sep 17 00:00:00 2001 From: Thomas Schwinge Date: Thu, 1 Oct 2009 09:59:23 +0200 Subject: September had 30 days. --- news/2009-09-30.mdwn | 31 +++++++++++++++++++++++++++++++ news/2009-09-31.mdwn | 31 ------------------------------- 2 files changed, 31 insertions(+), 31 deletions(-) create mode 100644 news/2009-09-30.mdwn delete mode 100644 news/2009-09-31.mdwn diff --git a/news/2009-09-30.mdwn b/news/2009-09-30.mdwn new file mode 100644 index 00000000..5cf7aac9 --- /dev/null +++ b/news/2009-09-30.mdwn @@ -0,0 +1,31 @@ +[[!meta copyright="Copyright © 2009 Free Software Foundation, Inc."]] + +[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable +id="license" text="Permission is granted to copy, distribute and/or modify this +document under the terms of the GNU Free Documentation License, Version 1.2 or +any later version published by the Free Software Foundation; with no Invariant +Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license +is included in the section entitled [[GNU Free Documentation +License|/fdl]]."]]"""]] + +[[!meta date="2009-09-01 00:00 UTC"]] + +[[!meta updated="2009-09-01 00:00 UTC"]] + +A month of the Hurd: *Successful Google Summer of Code project: unionmount*. +[[!if test="included()" then="""[[!toggle id=full_news +text="Details."]][[!toggleable id=full_news text="[[!paste id=full_news]]"]]""" +else="[[!paste id=full_news]]"]] + +[[!cut id="full_news" text=""" +> This month saw the successful completion of the Google Summer of Code 2009, +> for which [[Sergiu Ivanov|scolobb]] created a +> [[unionmount_translator|hurd/translator/unionmount]]. +> His work allows you to simply union one directory or translator into another one, +> so you see the files of both of them side by side. +> +> He was mentored by Olaf Buddenhagen and both are now working on polishing the code +> and extending the namespace based translator selection ([[hurd/translator/nsmux]]) which allows you to +> read a node with a selected translator by simply appending `,,` to its name. +> +"""]] diff --git a/news/2009-09-31.mdwn b/news/2009-09-31.mdwn deleted file mode 100644 index 5cf7aac9..00000000 --- a/news/2009-09-31.mdwn +++ /dev/null @@ -1,31 +0,0 @@ -[[!meta copyright="Copyright © 2009 Free Software Foundation, Inc."]] - -[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable -id="license" text="Permission is granted to copy, distribute and/or modify this -document under the terms of the GNU Free Documentation License, Version 1.2 or -any later version published by the Free Software Foundation; with no Invariant -Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license -is included in the section entitled [[GNU Free Documentation -License|/fdl]]."]]"""]] - -[[!meta date="2009-09-01 00:00 UTC"]] - -[[!meta updated="2009-09-01 00:00 UTC"]] - -A month of the Hurd: *Successful Google Summer of Code project: unionmount*. -[[!if test="included()" then="""[[!toggle id=full_news -text="Details."]][[!toggleable id=full_news text="[[!paste id=full_news]]"]]""" -else="[[!paste id=full_news]]"]] - -[[!cut id="full_news" text=""" -> This month saw the successful completion of the Google Summer of Code 2009, -> for which [[Sergiu Ivanov|scolobb]] created a -> [[unionmount_translator|hurd/translator/unionmount]]. -> His work allows you to simply union one directory or translator into another one, -> so you see the files of both of them side by side. -> -> He was mentored by Olaf Buddenhagen and both are now working on polishing the code -> and extending the namespace based translator selection ([[hurd/translator/nsmux]]) which allows you to -> read a node with a selected translator by simply appending `,,` to its name. -> -"""]] -- cgit v1.2.3 From c426f1068b89c4551e8a858be909687156a09583 Mon Sep 17 00:00:00 2001 From: Thomas Schwinge Date: Thu, 1 Oct 2009 13:49:17 +0200 Subject: Enhance news item. --- news/2009-09-30.mdwn | 3 +++ 1 file changed, 3 insertions(+) diff --git a/news/2009-09-30.mdwn b/news/2009-09-30.mdwn index 5cf7aac9..c2ff59b2 100644 --- a/news/2009-09-30.mdwn +++ b/news/2009-09-30.mdwn @@ -28,4 +28,7 @@ else="[[!paste id=full_news]]"]] > and extending the namespace based translator selection ([[hurd/translator/nsmux]]) which allows you to > read a node with a selected translator by simply appending `,,` to its name. > +> That aside, we saw the usual steady rate of enhancement discussions, as well +> as bugs getting fixed: X server crashing, preventing that GCC versions after +> 4.2 optimize too much, etc. """]] -- cgit v1.2.3 From 9f80dca98eb4ec34db8b159bb4c93b59a2ff4294 Mon Sep 17 00:00:00 2001 From: Thomas Schwinge Date: Thu, 1 Oct 2009 13:55:05 +0200 Subject: Finalize news item. --- news/2009-09-30.mdwn | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/news/2009-09-30.mdwn b/news/2009-09-30.mdwn index c2ff59b2..5deeb7f5 100644 --- a/news/2009-09-30.mdwn +++ b/news/2009-09-30.mdwn @@ -8,9 +8,9 @@ Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled [[GNU Free Documentation License|/fdl]]."]]"""]] -[[!meta date="2009-09-01 00:00 UTC"]] +[[!meta date="2009-10-01 11:52 UTC"]] -[[!meta updated="2009-09-01 00:00 UTC"]] +[[!meta updated="2009-10-01 11:52 UTC"]] A month of the Hurd: *Successful Google Summer of Code project: unionmount*. [[!if test="included()" then="""[[!toggle id=full_news -- cgit v1.2.3 From 2da97a5afa420a85577ac355ec369bf45c2bb5ee Mon Sep 17 00:00:00 2001 From: Thomas Schwinge Date: Thu, 1 Oct 2009 23:27:18 +0200 Subject: open_issues/m4_vs_stack: New page. --- open_issues/m4_vs_stack.mdwn | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 open_issues/m4_vs_stack.mdwn diff --git a/open_issues/m4_vs_stack.mdwn b/open_issues/m4_vs_stack.mdwn new file mode 100644 index 00000000..c92cfb00 --- /dev/null +++ b/open_issues/m4_vs_stack.mdwn @@ -0,0 +1,21 @@ +[[!meta copyright="Copyright © 2009 Free Software Foundation, Inc."]] + +[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable +id="license" text="Permission is granted to copy, distribute and/or modify this +document under the terms of the GNU Free Documentation License, Version 1.2 or +any later version published by the Free Software Foundation; with no Invariant +Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license +is included in the section entitled [[GNU Free Documentation +License|/fdl]]."]]"""]] + +[[!tag open_issue_porting]] + + m4 (1.4.13-1+hurd.2) unreleased; urgency=low + + * Drop stack overflow (checks/stackovf) check, test-c-stack and + test-c-stack2 checks, and /dev/null/ (test-open and test-fopen) checks. + + -- Samuel Thibault Tue, 18 Aug 2009 20:54:30 +0000 + + that was a quick fix (as not having m4 makes autoconf uninstallable, which is quite a problem) + there's probably something wrong in the stack management of the Hurd, I haven't investigated -- cgit v1.2.3 From f55e516c0b9ca0ea657467c2843bde0c0d302b64 Mon Sep 17 00:00:00 2001 From: Thomas Schwinge Date: Sat, 3 Oct 2009 12:17:39 +0200 Subject: public_hurd_boxen/domu_console: Simplify console instructions. --- public_hurd_boxen/domu_console.mdwn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public_hurd_boxen/domu_console.mdwn b/public_hurd_boxen/domu_console.mdwn index 02395e11..d766fe06 100644 --- a/public_hurd_boxen/domu_console.mdwn +++ b/public_hurd_boxen/domu_console.mdwn @@ -14,7 +14,7 @@ To avoid any complications with people trying to use the same console at the same time, please use this command for attaching to a domU's console (this command line will also start the domU in case that it isn't running already): - $ sudo screen -DRRS xen-console-[domU] sh -c 'xm console [domU] || xm create -c [domU]' + $ host=[domU] && sudo screen -DRRS console-$host sh -c "xm console $host || xm create -c $host" Otherwise, if one attaches to the same console twice, the second instance will in fact forward input to the domU (possibly infering with what the person is -- cgit v1.2.3 From 5969e48a9f70aa37d89c5665bd22fce16af92ab3 Mon Sep 17 00:00:00 2001 From: Thomas Schwinge Date: Sat, 3 Oct 2009 15:52:25 +0200 Subject: open_issues/bash_vs_screen_vs_sigint: New page. --- open_issues/bash_vs_screen_vs_sigint.mdwn | 68 +++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 open_issues/bash_vs_screen_vs_sigint.mdwn diff --git a/open_issues/bash_vs_screen_vs_sigint.mdwn b/open_issues/bash_vs_screen_vs_sigint.mdwn new file mode 100644 index 00000000..e6d9b41c --- /dev/null +++ b/open_issues/bash_vs_screen_vs_sigint.mdwn @@ -0,0 +1,68 @@ +[[!meta copyright="Copyright © 2009 Free Software Foundation, Inc."]] + +[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable +id="license" text="Permission is granted to copy, distribute and/or modify this +document under the terms of the GNU Free Documentation License, Version 1.2 or +any later version published by the Free Software Foundation; with no Invariant +Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license +is included in the section entitled [[GNU Free Documentation +License|/fdl]]."]]"""]] + +[[!tag open_issue_porting]] + +Typing `C-c` (*SIGINT*), different versions of *bash* and *screen* respond like +this: + + * GNU/Linux; Ubuntu package 3.2-5 / `$BASH_VERSION` is `3.2.48(1)-release` + * plain + * shell prompt: new line / prompt printed; `$?` is 1. + * `sleep 10` running: `^C` printed; SIGINT is sent; `$?` is 130. + * in a *screen* session (Ubuntu package 4.0.3-11ubuntu4): exactly the same. + + * GNU/Hurd; Debian package 3.2-6+b1 (equals 3.2-6) / `$BASH_VERSION` is `3.2.48(1)-release`; *libc0.3* Debian package 2.9-25 + * plain + * shell prompt: new line / prompt printed; `$?` is 1. + * `sleep 10` running: `^C` printed; SIGINT is sent; `$?` is 130. + * in a *screen* session (Debian package 4.0.3-11): exactly the same. + + This is equivalent to the GNU/Linux behavior. + + * GNU/Hurd; Debian package 4.0-4 / `$BASH_VERSION` is `4.0.28(1)-release`; *libc0.3* Debian package 2.9-25 + * plain + * shell prompt: **`^C`, then new line, then `-bash: echo: write error: (ipc/mig) wrong reply message ID`**, then new line / prompt printed; `$?` is **128**. + * `sleep 10` running: **`^C` printed**, SIGINT is sent; `$?` is 130. + * in a *screen* session (Debian package 4.0.3-11) + * shell prompt: **`^C`, then new line / prompt printed**; `$?` is **128**. + * `sleep 10` running: **`^C` printed**; SIGINT is sent; `$?` is 130. + + This differs from the behavior of the earlier *bash* version in the MIG + error in the not-*screen* case, and in the **128** value for `$?`. The + former is an error, and the latter may be as expected. (Check GNU/Linux + with that *bash* version.) + + * GNU/Hurd; Debian package 4.0-7 / `$BASH_VERSION` is `4.0.33(1)-release`; *libc0.3* Debian packages 2.9-19, 2.9-25 + * plain + * shell prompt: **`^C`, then new line, then `-bash: echo: write error: (ipc/mig) wrong reply message ID`**, then new line / prompt printed; `$?` is **128**. + * `sleep 10` running: `^C` printed; SIGINT is sent; `$?` is 130. + * in a *screen* session (Debian package 4.0.3-11) + * shell prompt: **`^C`**, then new line / prompt printed; `$?` is **128**. + * `sleep 10` running: `^C` printed; SIGINT is sent; `$?` is 130. + + This is equivalent to the *bash* 4.0-4 / 4.0.28(1) behavior. + + * GNU/Hurd; Debian package 4.0-7 / `$BASH_VERSION` is `4.0.33(1)-release`; *libc0.3* Debian package 2.9-27 + * plain + * shell prompt: **`^C`, then new line, then `-bash: echo: write error: (ipc/mig) wrong reply message ID`**, then new line / prompt printed; `$?` is **128**. + * `sleep 10` running: `^C` printed; SIGINT is sent; `$?` is 130. + * in a *screen* session (Debian package 4.0.3-14) + * shell prompt: **no reaction (nothing printed)**; `$?` thus is **unchanged**. + * `sleep 10` running: **`^C` printed**, SIGINT is **not** sent. + + The *screen* behavior differs. + + +To sum up: + + * *bash*: 4.0 packages have the MIG error, and the 128 return value difference. + + * *screen*: new package doesn't react to `C-c` anymore. -- cgit v1.2.3 From 9a04763a922a8f5084035d44eadd35709958fedc Mon Sep 17 00:00:00 2001 From: Thomas Schwinge Date: Sat, 3 Oct 2009 16:03:53 +0200 Subject: open_issues/bash_vs_screen_vs_sigint: Another version of glibc. --- open_issues/bash_vs_screen_vs_sigint.mdwn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/open_issues/bash_vs_screen_vs_sigint.mdwn b/open_issues/bash_vs_screen_vs_sigint.mdwn index e6d9b41c..8260b004 100644 --- a/open_issues/bash_vs_screen_vs_sigint.mdwn +++ b/open_issues/bash_vs_screen_vs_sigint.mdwn @@ -40,7 +40,7 @@ this: former is an error, and the latter may be as expected. (Check GNU/Linux with that *bash* version.) - * GNU/Hurd; Debian package 4.0-7 / `$BASH_VERSION` is `4.0.33(1)-release`; *libc0.3* Debian packages 2.9-19, 2.9-25 + * GNU/Hurd; Debian package 4.0-7 / `$BASH_VERSION` is `4.0.33(1)-release`; *libc0.3* Debian packages 2.9-19, 2.9-25, 2.9-27 * plain * shell prompt: **`^C`, then new line, then `-bash: echo: write error: (ipc/mig) wrong reply message ID`**, then new line / prompt printed; `$?` is **128**. * `sleep 10` running: `^C` printed; SIGINT is sent; `$?` is 130. -- cgit v1.2.3 From 78188ccfd77b9d5c6a0e95232536cdabc616bd85 Mon Sep 17 00:00:00 2001 From: Thomas Schwinge Date: Sat, 3 Oct 2009 16:08:37 +0200 Subject: open_issues/bash_vs_screen_vs_sigint: Improve. --- open_issues/bash_vs_screen_vs_sigint.mdwn | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/open_issues/bash_vs_screen_vs_sigint.mdwn b/open_issues/bash_vs_screen_vs_sigint.mdwn index 8260b004..c8a31a15 100644 --- a/open_issues/bash_vs_screen_vs_sigint.mdwn +++ b/open_issues/bash_vs_screen_vs_sigint.mdwn @@ -35,7 +35,7 @@ this: * shell prompt: **`^C`, then new line / prompt printed**; `$?` is **128**. * `sleep 10` running: **`^C` printed**; SIGINT is sent; `$?` is 130. - This differs from the behavior of the earlier *bash* version in the MIG + This differs from the behavior of the earlier *bash* version in the MIG reply error in the not-*screen* case, and in the **128** value for `$?`. The former is an error, and the latter may be as expected. (Check GNU/Linux with that *bash* version.) @@ -63,6 +63,6 @@ this: To sum up: - * *bash*: 4.0 packages have the MIG error, and the 128 return value difference. - - * *screen*: new package doesn't react to `C-c` anymore. + * *bash*: 4.0 packages print `^C` at the shell prompt, have the MIG reply + error, and the difference in the value 128 for `$?`. + * *screen*: new package causes that invokee doesn't react to `C-c` anymore. -- cgit v1.2.3 From 11d907085b93f3ea972556607658371be5f31507 Mon Sep 17 00:00:00 2001 From: lukeshu Date: Mon, 5 Oct 2009 00:53:58 +0000 Subject: fix markup on link to http://lists.gnu.org/mailman/listinfo/gnu-system-discuss --- hurd/running/gnu/setup.mdwn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hurd/running/gnu/setup.mdwn b/hurd/running/gnu/setup.mdwn index 57a19054..2fb30c7b 100644 --- a/hurd/running/gnu/setup.mdwn +++ b/hurd/running/gnu/setup.mdwn @@ -8,7 +8,7 @@ Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled [[GNU Free Documentation License|/fdl]]."]]"""]] -Setup is very easy (You need a GNU/Linux system to install GNU, we are developing an installer for GNU and if you want to help us join us on [[http://lists.gnu.org/mailman/listinfo/gnu-system-discuss][gnu-system-discuss]]), just follow these steps ... +Setup is very easy (You need a GNU/Linux system to install GNU, we are developing an installer for GNU and if you want to help us join us on [gnu-system-discuss](http://lists.gnu.org/mailman/listinfo/gnu-system-discuss)), just follow these steps ... ## Step 1: Find a home for GNU -- cgit v1.2.3 From f1cc66b89ae0c42a3c85eec0344746e88a09d231 Mon Sep 17 00:00:00 2001 From: lukeshu Date: Mon, 5 Oct 2009 00:58:40 +0000 Subject: spelling fixes --- hurd/running/gnu/create_an_image.mdwn | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/hurd/running/gnu/create_an_image.mdwn b/hurd/running/gnu/create_an_image.mdwn index 2cdb8e27..c7a97a4e 100644 --- a/hurd/running/gnu/create_an_image.mdwn +++ b/hurd/running/gnu/create_an_image.mdwn @@ -27,7 +27,7 @@ Creating a bootable qemu image from a root filesystem and bootloader create the necessary partitions (root and swap partitions boot, home ... if required) -4. Create a file syatem for the root partiotion +4. Create a file system for the root partition mke2fs /dev/hda1 @@ -39,7 +39,7 @@ Creating a bootable qemu image from a root filesystem and bootloader 6. Copy the file system from the host machine to the mounted directory (use a compressed file system to make the copying faster) - Grab the GNU spapshot from ams' site + Grab the GNU snapshot from ams' site scp @: disk @@ -58,7 +58,7 @@ Creating a bootable qemu image from a root filesystem and bootloader poweroff -10. To make the file syatem bootable download a grub floppy image +10. To make the file system bootable download a grub floppy image -- cgit v1.2.3 From 40688914dd0874cc27d22837234e3b7a342b9bd4 Mon Sep 17 00:00:00 2001 From: Thomas Schwinge Date: Mon, 5 Oct 2009 14:34:53 +0200 Subject: public_hurd_boxen/domu_console: Tiny correction. --- public_hurd_boxen/domu_console.mdwn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public_hurd_boxen/domu_console.mdwn b/public_hurd_boxen/domu_console.mdwn index d766fe06..bf171a41 100644 --- a/public_hurd_boxen/domu_console.mdwn +++ b/public_hurd_boxen/domu_console.mdwn @@ -22,7 +22,7 @@ doing on the first instance), but the output won't be sent back to the second instance. After having typed this once, Bash's `reverse-search-history` (`C-r`), followed -by typing in `console-flubber`, for example, will be enough to get access to +by typing in `host=flubber`, for example, will be enough to get access to that machine's console. /!\ TODO: How does one get the environment variables `COLUMNS` and `LINES` set -- cgit v1.2.3 From 7fb4f0a6349a99dcf248b9809ee9c6baf432ff57 Mon Sep 17 00:00:00 2001 From: Thomas Schwinge Date: Mon, 5 Oct 2009 14:37:29 +0200 Subject: public_hurd_boxen/domu_console -> public_hurd_boxen/xen_handling --- public_hurd_boxen/domu_console.mdwn | 31 ------------------------------- public_hurd_boxen/xen_handling.mdwn | 31 +++++++++++++++++++++++++++++++ public_hurd_boxen/zenhost.mdwn | 2 +- 3 files changed, 32 insertions(+), 32 deletions(-) delete mode 100644 public_hurd_boxen/domu_console.mdwn create mode 100644 public_hurd_boxen/xen_handling.mdwn diff --git a/public_hurd_boxen/domu_console.mdwn b/public_hurd_boxen/domu_console.mdwn deleted file mode 100644 index bf171a41..00000000 --- a/public_hurd_boxen/domu_console.mdwn +++ /dev/null @@ -1,31 +0,0 @@ -[[!meta copyright="Copyright © 2009 Free Software Foundation, Inc."]] - -[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable -id="license" text="Permission is granted to copy, distribute and/or modify this -document under the terms of the GNU Free Documentation License, Version 1.2 or -any later version published by the Free Software Foundation; with no Invariant -Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license -is included in the section entitled [[GNU Free Documentation -License|/fdl]]."]]"""]] - -[[!meta title="domU console"]] - -To avoid any complications with people trying to use the same console at the -same time, please use this command for attaching to a domU's console (this -command line will also start the domU in case that it isn't running already): - - $ host=[domU] && sudo screen -DRRS console-$host sh -c "xm console $host || xm create -c $host" - -Otherwise, if one attaches to the same console twice, the second instance will -in fact forward input to the domU (possibly infering with what the person is -doing on the first instance), but the output won't be sent back to the second -instance. - -After having typed this once, Bash's `reverse-search-history` (`C-r`), followed -by typing in `host=flubber`, for example, will be enough to get access to -that machine's console. - -/!\ TODO: How does one get the environment variables `COLUMNS` and `LINES` set -properly when using `xm console`? This is relevant for everything using -`(n)curses` -- for interactive console applications. Using `export COLUMNS=143 -LINES=44` does work, but is a manual process. diff --git a/public_hurd_boxen/xen_handling.mdwn b/public_hurd_boxen/xen_handling.mdwn new file mode 100644 index 00000000..8407cd58 --- /dev/null +++ b/public_hurd_boxen/xen_handling.mdwn @@ -0,0 +1,31 @@ +[[!meta copyright="Copyright © 2009 Free Software Foundation, Inc."]] + +[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable +id="license" text="Permission is granted to copy, distribute and/or modify this +document under the terms of the GNU Free Documentation License, Version 1.2 or +any later version published by the Free Software Foundation; with no Invariant +Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license +is included in the section entitled [[GNU Free Documentation +License|/fdl]]."]]"""]] + +# domU consoles + +To avoid any complications with people trying to use the same console at the +same time, please use this command for attaching to a domU's console (this +command line will also start the domU in case that it isn't running already): + + $ host=[domU] && sudo screen -DRRS console-$host sh -c "xm console $host || xm create -c $host" + +Otherwise, if one attaches to the same console twice, the second instance will +in fact forward input to the domU (possibly infering with what the person is +doing on the first instance), but the output won't be sent back to the second +instance. + +After having typed this once, Bash's `reverse-search-history` (`C-r`), followed +by typing in `host=flubber`, for example, will be enough to get access to +that machine's console. + +/!\ TODO: How does one get the environment variables `COLUMNS` and `LINES` set +properly when using `xm console`? This is relevant for everything using +`(n)curses` -- for interactive console applications. Using `export COLUMNS=143 +LINES=44` does work, but is a manual process. diff --git a/public_hurd_boxen/zenhost.mdwn b/public_hurd_boxen/zenhost.mdwn index e5f42aab..525f4e36 100644 --- a/public_hurd_boxen/zenhost.mdwn +++ b/public_hurd_boxen/zenhost.mdwn @@ -12,4 +12,4 @@ License|/fdl]]."]]"""]] (see the table on [[public hurd boxen]] for a list). -[[!inline pages=public_hurd_boxen/domu_console feeds=no]] +[[!inline pages=public_hurd_boxen/xen_handling feeds=no]] -- cgit v1.2.3 From 7795eaf0e452da24f7302c132fc6ca7f9460a0c7 Mon Sep 17 00:00:00 2001 From: Thomas Schwinge Date: Mon, 5 Oct 2009 14:45:16 +0200 Subject: public_hurd_boxen/xen_handling: Some more Xen usage basics. --- public_hurd_boxen/xen_handling.mdwn | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/public_hurd_boxen/xen_handling.mdwn b/public_hurd_boxen/xen_handling.mdwn index 8407cd58..e0874b37 100644 --- a/public_hurd_boxen/xen_handling.mdwn +++ b/public_hurd_boxen/xen_handling.mdwn @@ -8,6 +8,20 @@ Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled [[GNU Free Documentation License|/fdl]]."]]"""]] +# listing running domUs + + $ sudo xm list + + $ sudo xm top + +# handling running domUs + +Forcefully killing a domU (that has crashed or is busy-looping, etc.): + + $ sudo xm destroy [domU] + +As for (re-)starting a domU, read below in *domU consoles*. + # domU consoles To avoid any complications with people trying to use the same console at the -- cgit v1.2.3 From 79cdd566c5194a8ce0a21d3bbb72f9a7d25ea530 Mon Sep 17 00:00:00 2001 From: Thomas Schwinge Date: Mon, 5 Oct 2009 14:49:37 +0200 Subject: public_hurd_boxen/xen_handling: About ``xm shutdown''. --- public_hurd_boxen/xen_handling.mdwn | 4 ++++ tag/open_issue_xen.mdwn | 19 +++++++++++++++++++ 2 files changed, 23 insertions(+) create mode 100644 tag/open_issue_xen.mdwn diff --git a/public_hurd_boxen/xen_handling.mdwn b/public_hurd_boxen/xen_handling.mdwn index e0874b37..47d92c43 100644 --- a/public_hurd_boxen/xen_handling.mdwn +++ b/public_hurd_boxen/xen_handling.mdwn @@ -22,6 +22,10 @@ Forcefully killing a domU (that has crashed or is busy-looping, etc.): As for (re-)starting a domU, read below in *domU consoles*. +Using `xm shutdown [domU]` to gracefully shut down a running domU does not yet +work -- this is not yet implemented in the [[Xen port of GNU +Mach|microkernel/mach/gnumach/ports/xen]] ([[!taglink open_issue_xen]]). + # domU consoles To avoid any complications with people trying to use the same console at the diff --git a/tag/open_issue_xen.mdwn b/tag/open_issue_xen.mdwn new file mode 100644 index 00000000..5ce9301c --- /dev/null +++ b/tag/open_issue_xen.mdwn @@ -0,0 +1,19 @@ +[[!meta copyright="Copyright © 2009 Free Software Foundation, Inc."]] + +[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable +id="license" text="Permission is granted to copy, distribute and/or modify this +document under the terms of the GNU Free Documentation License, Version 1.2 or +any later version published by the Free Software Foundation; with no Invariant +Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license +is included in the section entitled [[GNU Free Documentation +License|/fdl]]."]]"""]] + +[[!meta title=open_issue_xen]] + +[[!map pages="tagged(open_issue_xen) and !open_issues and !*/discussion" +show=title]] + +[[!inline +pages="tagged(open_issue_xen) and !open_issues and !*/discussion" +show=0 +feeds=no]] -- cgit v1.2.3 From 7074ada224a2033f84f87d343378e84b7ae7771a Mon Sep 17 00:00:00 2001 From: Thomas Schwinge Date: Mon, 5 Oct 2009 23:12:20 +0200 Subject: open_issues/xen_crash_copy-size_le_page_size: Tag as open_issue_xen. --- open_issues/xen_crash_copy-size_le_page_size.mdwn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/open_issues/xen_crash_copy-size_le_page_size.mdwn b/open_issues/xen_crash_copy-size_le_page_size.mdwn index 0aa030fd..f2d8081e 100644 --- a/open_issues/xen_crash_copy-size_le_page_size.mdwn +++ b/open_issues/xen_crash_copy-size_le_page_size.mdwn @@ -8,7 +8,7 @@ Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled [[GNU Free Documentation License|/fdl]]."]]"""]] -[[!tag open_issue_gnumach]] +[[!tag open_issue_xen]] `/dev/hd2` is 2 GiB in size (backed by LVM), unformatted. -- cgit v1.2.3 From 80edc6ab43ce69dee3e50dddd59784b6102c5d8c Mon Sep 17 00:00:00 2001 From: Thomas Schwinge Date: Tue, 6 Oct 2009 14:42:43 +0200 Subject: hurd/translator: The (non-)difference between server and translator. --- hurd/translator.mdwn | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/hurd/translator.mdwn b/hurd/translator.mdwn index 158f53d7..e567938f 100644 --- a/hurd/translator.mdwn +++ b/hurd/translator.mdwn @@ -33,6 +33,17 @@ kernel and thus have absolute access to the machine. As the protocols do not require any special privilege to implement, this is not an issue on the Hurd. +In Mach parlance, a *translator* is what they name a *server*: a process that +participates in [[RPC]] interactions. In the Hurd, a translator is a server +that is additionally attached to a filesystem node. Thus, it is quite common, +even in the Hurd context, to speak about *server*s if you're stressing the RPC +part, and on the other hand about *translator*s if you're stressing the +filesystem part: a translator implements the [[interface/fs]] and +[[interface/io]] interfaces. For example: *the [[pfinet]] server implements +the socket API calls (which are mapped by [[glibc]] to equivalent RPC calls)*, +compared to *a [[libdiskfs]]-based translator implements a filesystem, based on +a backing store*. + To learn how to write a translator, read the code! It is well documented, in particular, the header files. The [[Hurd_Hacking_Guide]] also has a tutorial. -- cgit v1.2.3 From 46026d07791386c61acbdd26db4b5a77e92356bb Mon Sep 17 00:00:00 2001 From: Thomas Schwinge Date: Tue, 6 Oct 2009 23:37:48 +0200 Subject: open_issues/screen: New page. --- open_issues/screen.mdwn | 106 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 106 insertions(+) create mode 100644 open_issues/screen.mdwn diff --git a/open_issues/screen.mdwn b/open_issues/screen.mdwn new file mode 100644 index 00000000..cc2110ad --- /dev/null +++ b/open_issues/screen.mdwn @@ -0,0 +1,106 @@ +[[!meta copyright="Copyright © 2009 Free Software Foundation, Inc."]] + +[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable +id="license" text="Permission is granted to copy, distribute and/or modify this +document under the terms of the GNU Free Documentation License, Version 1.2 or +any later version published by the Free Software Foundation; with no Invariant +Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license +is included in the section entitled [[GNU Free Documentation +License|/fdl]]."]]"""]] + +[[!tag open_issue_porting]] + +Revisit this issue: [[!debbug 97343]] -- special handling of `TIOCSCTTY` +depending on `__GNU__`. + +--- + +`#ifdef linux` and friends are used in quite a number of places. + +--- + +All diffs are GNU/Linux vs. GNU/Hurd. + + /* + * If your system supports BSD4.4's seteuid() and setegid(), define + * HAVE_SETEUID. + */ + -/* #undef HAVE_SETEUID */ + +#define HAVE_SETEUID 1 + +TODO: check. + +--- + + /* + * define HAVE_SVR4_PTYS if you have a /dev/ptmx character special + * device and support the ptsname(), grantpt(), unlockpt() functions. + */ + -#define HAVE_SVR4_PTYS 1 + +/* #undef HAVE_SVR4_PTYS */ + + /* + * define HAVE_GETPT if you have the getpt() function. + */ + #define HAVE_GETPT 1 + + /* + * define HAVE_OPENPTY if your system has the openpty() call. + */ + -/* #undef HAVE_OPENPTY */ + +#define HAVE_OPENPTY 1 + + /* + * define PTYRANGE0 and or PTYRANGE1 if you want to adapt screen + * to unusual environments. E.g. For SunOs the defaults are "qpr" and + * "0123456789abcdef". For SunOs 4.1.2 + * #define PTYRANGE0 "pqrstuvwxyzPQRST" + * is recommended by Dan Jacobson. + */ + -/* #undef PTYRANGE0 */ + -/* #undef PTYRANGE1 */ + +#define PTYRANGE0 "pq" + +#define PTYRANGE1 "0123456789abcdefghijklmnopqrstuv" + +TODO: check: `HAVE_SVR4_PTYS` is due to `configure.in` doing `test -c +/dev/ptmx`. But: even if we don't have that file, we still have `ptsname`, +`grantpt`, `unlockpt`. + +--- + + gcc -c -I. -I. -g -O2 -O2 -g -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers pty.c + +pty.c: In function 'OpenPTY': + +pty.c:323: warning: implicit declaration of function 'openpty' + +pty.c: At top level: + +pty.c:75: warning: 'PtyName' defined but not used + +pty.c:86: warning: 'PtyProto' defined but not used + +pty.c:87: warning: 'TtyProto' defined but not used + +TODO: check. + +--- + + --- linux/osdef.h 2009-10-06 18:43:53.000000000 +0200 + +++ screen-4.0.3/osdef.h 2009-10-06 18:49:49.000000000 +0200 + @@ -42,13 +42,19 @@ + #endif + + #ifdef SYSV + +extern char *strchr __P((char *, int)); + +extern char *strrchr __P((char *, int)); + +extern char *memset __P((char *, int, int)); + +extern int memcmp __P((char *, char *, int)); + #else + #endif + + #ifndef USEBCOPY + # ifdef USEMEMCPY + +extern void memcpy __P((char *, char *, int)); + # else + # ifdef USEMEMMOVE + +extern void memmove __P((char *, char *, int)); + # else + # endif + # endif + +TODO: check. -- cgit v1.2.3 From 241e89d0f00ef6a65258f19c2517419fe6030db9 Mon Sep 17 00:00:00 2001 From: Thomas Schwinge Date: Wed, 7 Oct 2009 20:48:53 +0200 Subject: shortcuts: Update to ikiwiki's 93ddca3e9c420f334cc0bebd53945633452513a3. --- shortcuts.mdwn | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/shortcuts.mdwn b/shortcuts.mdwn index 47698bb2..bd4a7ee3 100644 --- a/shortcuts.mdwn +++ b/shortcuts.mdwn @@ -7,6 +7,7 @@ Some examples of using shortcuts include: \[[!google foo]] \[[!wikipedia War_of_1812]] \[[!debbug 12345]] + Check the \[[!cia ikiwiki desc="CIA page for %s"]]. This page controls what shortcut links the wiki supports. @@ -16,14 +17,17 @@ This page controls what shortcut links the wiki supports. * [[!shortcut name=gmsg url="http://groups.google.com/groups?selm=%s"]] * [[!shortcut name=wikipedia url="http://en.wikipedia.org/wiki/%s"]] * [[!shortcut name=wikitravel url="http://wikitravel.org/en/%s"]] -* [[!shortcut name=debbug url="http://bugs.debian.org/%s" desc="bug #%s"]] +* [[!shortcut name=wiktionary url="http://en.wiktionary.org/wiki/%s"]] +* [[!shortcut name=debbug url="http://bugs.debian.org/%S" desc="Debian bug #%s"]] * [[!shortcut name=deblist url="http://lists.debian.org/debian-%s" desc="debian-%s@lists.debian.org"]] * [[!shortcut name=debpkg url="http://packages.debian.org/%s"]] +* [[!shortcut name=debpkgsid url="http://packages.debian.org/sid/%s"]] * [[!shortcut name=debpts url="http://packages.qa.debian.org/%s"]] * [[!shortcut name=debmsg url="http://lists.debian.org/msgid-search/%s"]] * [[!shortcut name=debrt url="https://rt.debian.org/Ticket/Display.html?id=%s"]] * [[!shortcut name=debss url="http://snapshot.debian.net/package/%s"]] * Usage: `\[[!debss package]]`, `\[[!debss package#version]]`, or `\[[!debss package/version]]`. See http://snapshot.debian.net for details. +* [[!shortcut name=debwiki url="http://wiki.debian.org/%s"]] * [[!shortcut name=fdobug url="https://bugs.freedesktop.org/show_bug.cgi?id=%s" desc="freedesktop.org bug #%s"]] * [[!shortcut name=fdolist url="http://lists.freedesktop.org/mailman/listinfo/%s" desc="%s@lists.freedesktop.org"]] * [[!shortcut name=gnomebug url="http://bugzilla.gnome.org/show_bug.cgi?id=%s" desc="GNOME bug #%s"]] @@ -53,21 +57,24 @@ This page controls what shortcut links the wiki supports. * [[!shortcut name=cia url="http://cia.vc/stats/project/%s"]] * [[!shortcut name=ciauser url="http://cia.vc/stats/user/%s"]] * [[!shortcut name=flickr url="http://www.flickr.com/photos/%s"]] +* [[!shortcut name=man url="http://linux.die.net/man/%s"]] +* [[!shortcut name=ohloh url="http://www.ohloh.net/projects/%s"]] To add a new shortcut, use the `shortcut` -[[ikiwiki/PreprocessorDirective]]. In the url, "%s" is replaced with the -text passed to the named shortcut, after url-encoding it, and '%S' is -replaced with the raw, non-encoded text. The optional `desc` parameter -controls the description of the link. +[[ikiwiki/directive]]. In the url, "%s" is replaced with the +text passed to the named shortcut, after [[!wikipedia url_encoding]] +it, and '%S' is replaced with the raw, non-encoded text. The optional +`desc` parameter controls the description of the link. Remember that the `name` you give the shortcut will become a new -[[ikiwiki/PreprocessorDirective]]. Avoid using a `name` that conflicts -with an existing directive. +[[ikiwiki/directive]]. Avoid using a `name` that conflicts +with an existing directive. These directives also accept a `desc` +parameter that will override the one provided at definition time. If you come up with a shortcut that you think others might find useful, -consider contributing it to the [[!iki shortcuts]] page on the ikiwiki -ikiwiki, so that future versions of ikiwiki will include your shortcut -in the standard underlay. +consider contributing it to the [shortcuts page on the ikiwiki +wiki](http://ikiwiki.info/shortcuts/), so that future versions of +ikiwiki will include your shortcut in the standard underlay. # Local stuff -- cgit v1.2.3 From dff5f1a813f641100cc16b520e64502fae567f4f Mon Sep 17 00:00:00 2001 From: Thomas Schwinge Date: Wed, 7 Oct 2009 22:01:04 +0200 Subject: open_issues/bash_vs_screen_vs_sigint: The screen issue is resolved: Debian bug #522689#38. --- open_issues/bash_vs_screen_vs_sigint.mdwn | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/open_issues/bash_vs_screen_vs_sigint.mdwn b/open_issues/bash_vs_screen_vs_sigint.mdwn index c8a31a15..8dbb6816 100644 --- a/open_issues/bash_vs_screen_vs_sigint.mdwn +++ b/open_issues/bash_vs_screen_vs_sigint.mdwn @@ -58,11 +58,11 @@ this: * shell prompt: **no reaction (nothing printed)**; `$?` thus is **unchanged**. * `sleep 10` running: **`^C` printed**, SIGINT is **not** sent. - The *screen* behavior differs. + The *screen* behavior differs -- [[!debbug 522689#38]]. To sum up: * *bash*: 4.0 packages print `^C` at the shell prompt, have the MIG reply error, and the difference in the value 128 for `$?`. - * *screen*: new package causes that invokee doesn't react to `C-c` anymore. + * *screen*: new package causes that invokee doesn't react to `C-c` anymore. -- cgit v1.2.3 From fc2488eb1ebe33ecd88880138fc640e4aafcb3cb Mon Sep 17 00:00:00 2001 From: Thomas Schwinge Date: Wed, 7 Oct 2009 22:15:31 +0200 Subject: open_issues/bash_vs_screen_vs_sigint: A few bash issues are the same on GNU/Linux. --- open_issues/bash_vs_screen_vs_sigint.mdwn | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/open_issues/bash_vs_screen_vs_sigint.mdwn b/open_issues/bash_vs_screen_vs_sigint.mdwn index 8dbb6816..371b622e 100644 --- a/open_issues/bash_vs_screen_vs_sigint.mdwn +++ b/open_issues/bash_vs_screen_vs_sigint.mdwn @@ -29,30 +29,30 @@ this: * GNU/Hurd; Debian package 4.0-4 / `$BASH_VERSION` is `4.0.28(1)-release`; *libc0.3* Debian package 2.9-25 * plain - * shell prompt: **`^C`, then new line, then `-bash: echo: write error: (ipc/mig) wrong reply message ID`**, then new line / prompt printed; `$?` is **128**. - * `sleep 10` running: **`^C` printed**, SIGINT is sent; `$?` is 130. + * shell prompt: `^C`, then new line, then **`-bash: echo: write error: (ipc/mig) wrong reply message ID`**, then new line / prompt printed; `$?` is 128. + * `sleep 10` running: `^C` printed, SIGINT is sent; `$?` is 130. * in a *screen* session (Debian package 4.0.3-11) - * shell prompt: **`^C`, then new line / prompt printed**; `$?` is **128**. - * `sleep 10` running: **`^C` printed**; SIGINT is sent; `$?` is 130. + * shell prompt: `^C`, then new line / prompt printed; `$?` is 128. + * `sleep 10` running: `^C` printed; SIGINT is sent; `$?` is 130. This differs from the behavior of the earlier *bash* version in the MIG reply - error in the not-*screen* case, and in the **128** value for `$?`. The - former is an error, and the latter may be as expected. (Check GNU/Linux - with that *bash* version.) + error in the not-*screen* case, and, when in command-line editing mode, the + displaying of `^C` (same on GNU/Linux), and the 128 value for `$?` (same on + GNU/Linux). * GNU/Hurd; Debian package 4.0-7 / `$BASH_VERSION` is `4.0.33(1)-release`; *libc0.3* Debian packages 2.9-19, 2.9-25, 2.9-27 * plain - * shell prompt: **`^C`, then new line, then `-bash: echo: write error: (ipc/mig) wrong reply message ID`**, then new line / prompt printed; `$?` is **128**. + * shell prompt: `^C`, then new line, then **`-bash: echo: write error: (ipc/mig) wrong reply message ID`**, then new line / prompt printed; `$?` is 128. * `sleep 10` running: `^C` printed; SIGINT is sent; `$?` is 130. * in a *screen* session (Debian package 4.0.3-11) - * shell prompt: **`^C`**, then new line / prompt printed; `$?` is **128**. + * shell prompt: `^C`, then new line / prompt printed; `$?` is 128. * `sleep 10` running: `^C` printed; SIGINT is sent; `$?` is 130. This is equivalent to the *bash* 4.0-4 / 4.0.28(1) behavior. * GNU/Hurd; Debian package 4.0-7 / `$BASH_VERSION` is `4.0.33(1)-release`; *libc0.3* Debian package 2.9-27 * plain - * shell prompt: **`^C`, then new line, then `-bash: echo: write error: (ipc/mig) wrong reply message ID`**, then new line / prompt printed; `$?` is **128**. + * shell prompt: `^C`, then new line, then **`-bash: echo: write error: (ipc/mig) wrong reply message ID`**, then new line / prompt printed; `$?` is 128. * `sleep 10` running: `^C` printed; SIGINT is sent; `$?` is 130. * in a *screen* session (Debian package 4.0.3-14) * shell prompt: **no reaction (nothing printed)**; `$?` thus is **unchanged**. @@ -63,6 +63,5 @@ this: To sum up: - * *bash*: 4.0 packages print `^C` at the shell prompt, have the MIG reply - error, and the difference in the value 128 for `$?`. + * *bash*: 4.0 packages have the MIG reply error. * *screen*: new package causes that invokee doesn't react to `C-c` anymore. -- cgit v1.2.3 From a6088679c4b7a8b8dec469aeaf7f422fea44b455 Mon Sep 17 00:00:00 2001 From: Thomas Schwinge Date: Wed, 7 Oct 2009 22:21:51 +0200 Subject: open_issues/gdb_gcore: New page. --- open_issues/gdb_gcore.mdwn | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 open_issues/gdb_gcore.mdwn diff --git a/open_issues/gdb_gcore.mdwn b/open_issues/gdb_gcore.mdwn new file mode 100644 index 00000000..7d4980f1 --- /dev/null +++ b/open_issues/gdb_gcore.mdwn @@ -0,0 +1,23 @@ +[[!meta copyright="Copyright © 2009 Free Software Foundation, Inc."]] + +[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable +id="license" text="Permission is granted to copy, distribute and/or modify this +document under the terms of the GNU Free Documentation License, Version 1.2 or +any later version published by the Free Software Foundation; with no Invariant +Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license +is included in the section entitled [[GNU Free Documentation +License|/fdl]]."]]"""]] + +[[!meta title="GDB: gcore"]] + +[[!tag open_issue_gdb]] + +GDB's `gcore` command doesn't work / needs to be implemented / ported in GDB: + + tschwinge@flubber:~ $ gcore 8371 + [New Thread 8371.1] + [New Thread 8371.2] + [New Thread 8371.3] + /media/data/home/tschwinge/core.cA0ICY:2: Error in sourced command file: + Undefined command: "gcore". Try "help". + gcore: failed to create core.8371 -- cgit v1.2.3 From 434df18f5ff96012bc81ec5c2639b3bc67fc76b2 Mon Sep 17 00:00:00 2001 From: Thomas Schwinge Date: Wed, 7 Oct 2009 22:39:05 +0200 Subject: hurd/glibc/internals: New. --- hurd/glibc.mdwn | 5 ++++- hurd/glibc/internals.mdwn | 11 +++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 hurd/glibc/internals.mdwn diff --git a/hurd/glibc.mdwn b/hurd/glibc.mdwn index e975a239..454b8e34 100644 --- a/hurd/glibc.mdwn +++ b/hurd/glibc.mdwn @@ -1,4 +1,5 @@ -[[!meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]] +[[!meta copyright="Copyright © 2007, 2008, 2009 Free Software Foundation, +Inc."]] [[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable id="license" text="Permission is granted to copy, distribute and/or modify this @@ -16,3 +17,5 @@ For information about how the glibc integrates into the system, see sections [[Hurd-specific_API]]. [[Debugging_glibc|debugging/glibc]]. + +[[Internals.]] diff --git a/hurd/glibc/internals.mdwn b/hurd/glibc/internals.mdwn new file mode 100644 index 00000000..b5d7354e --- /dev/null +++ b/hurd/glibc/internals.mdwn @@ -0,0 +1,11 @@ +[[!meta copyright="Copyright © 2009 Free Software Foundation, Inc."]] + +[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable +id="license" text="Permission is granted to copy, distribute and/or modify this +document under the terms of the GNU Free Documentation License, Version 1.2 or +any later version published by the Free Software Foundation; with no Invariant +Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license +is included in the section entitled [[GNU Free Documentation +License|/fdl]]."]]"""]] + +Some bits about this, some bits about that. -- cgit v1.2.3 From 89f832efb353132ec8374af73ed35231a4d20288 Mon Sep 17 00:00:00 2001 From: Thomas Schwinge Date: Wed, 7 Oct 2009 22:44:26 +0200 Subject: hurd/glibc/internals: Information by Roland McGrath, bug-hurd, 2009-10-06, <20091006220809.84D691C2EB@topped-with-meat.com>. --- hurd/glibc/internals.mdwn | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/hurd/glibc/internals.mdwn b/hurd/glibc/internals.mdwn index b5d7354e..2ced0543 100644 --- a/hurd/glibc/internals.mdwn +++ b/hurd/glibc/internals.mdwn @@ -9,3 +9,13 @@ is included in the section entitled [[GNU Free Documentation License|/fdl]]."]]"""]] Some bits about this, some bits about that. + +--- + +Hurd controlling tty behavior is generally consistent with BSD's, including +`TIOCSCTTY`. Linux also has `TIOCSCTTY` and it is harmless to use it there. +But BSD and Hurd never do an implicit `TIOCSCTTY` (hence our `O_NOCTTY` is +zero). + +C.f. and the +following messages. -- cgit v1.2.3 From 771bd0745a4d7eb990ce8d42f8ae7b4f163c4dfb Mon Sep 17 00:00:00 2001 From: Thomas Schwinge Date: Thu, 8 Oct 2009 08:32:20 +0200 Subject: open_issues/bash_vs_screen_vs_sigint: bash 4.0 error, fixed for 4.1. --- open_issues/bash_vs_screen_vs_sigint.mdwn | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/open_issues/bash_vs_screen_vs_sigint.mdwn b/open_issues/bash_vs_screen_vs_sigint.mdwn index 371b622e..f5ce5166 100644 --- a/open_issues/bash_vs_screen_vs_sigint.mdwn +++ b/open_issues/bash_vs_screen_vs_sigint.mdwn @@ -36,9 +36,11 @@ this: * `sleep 10` running: `^C` printed; SIGINT is sent; `$?` is 130. This differs from the behavior of the earlier *bash* version in the MIG reply - error in the not-*screen* case, and, when in command-line editing mode, the - displaying of `^C` (same on GNU/Linux), and the 128 value for `$?` (same on - GNU/Linux). + error in the not-*screen* case. The difference in command-line editing + mode, the displaying of `^C` (same on GNU/Linux), and / or the value 128 + for `$?` (same on GNU/Linux) is a bash 4.0 regression that has been fixed + for 4.1 already: + . * GNU/Hurd; Debian package 4.0-7 / `$BASH_VERSION` is `4.0.33(1)-release`; *libc0.3* Debian packages 2.9-19, 2.9-25, 2.9-27 * plain -- cgit v1.2.3 From 924e9702036d8a1506cc6bb07facb18e23494519 Mon Sep 17 00:00:00 2001 From: Thomas Schwinge Date: Thu, 8 Oct 2009 09:26:42 +0200 Subject: open_issues/bash_vs_screen_vs_sigint: MIG reply error isolated to PROMPT_COMMAND being set. --- open_issues/bash_vs_screen_vs_sigint.mdwn | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/open_issues/bash_vs_screen_vs_sigint.mdwn b/open_issues/bash_vs_screen_vs_sigint.mdwn index f5ce5166..47d79c65 100644 --- a/open_issues/bash_vs_screen_vs_sigint.mdwn +++ b/open_issues/bash_vs_screen_vs_sigint.mdwn @@ -65,5 +65,24 @@ this: To sum up: - * *bash*: 4.0 packages have the MIG reply error. * *screen*: new package causes that invokee doesn't react to `C-c` anymore. + + * *bash*: 4.0 packages have the MIG reply error. + + After having noticed that this error doesn't occur if starting *bash* with + `--norc`, I isolated it to the following command in `.bashrc`: + + case $TERM in + xterm* | rxvt*) + PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME}:${PWD}\007"';; + esac + + ... and indeed: + + tschwinge@flubber:~ $ echo "$TERM" -- "$PROMPT_COMMAND" + xterm -- echo -ne "\033]0;${USER}@${HOSTNAME}:${PWD}\007" + tschwinge@flubber:~ $ ^C + -bash: echo: write error: (ipc/mig) wrong reply message ID + tschwinge@flubber:~ $ PROMPT_COMMAND= + tschwinge@flubber:~ $ ^C + tschwinge@flubber:~ $ -- cgit v1.2.3 From f006d45dda72605da09322dc7941f2ed5629395b Mon Sep 17 00:00:00 2001 From: Thomas Schwinge Date: Thu, 8 Oct 2009 14:50:56 +0200 Subject: open_issues/bash_vs_screen_vs_sigint: Separate bash and screen issue. open_issues/bash: Add more information w.r.t. PROMPT_COMMAND. --- open_issues/bash.mdwn | 47 ++++++++++++++++++ open_issues/bash_vs_screen_vs_sigint.mdwn | 80 +------------------------------ open_issues/screen.mdwn | 10 ++++ 3 files changed, 59 insertions(+), 78 deletions(-) create mode 100644 open_issues/bash.mdwn diff --git a/open_issues/bash.mdwn b/open_issues/bash.mdwn new file mode 100644 index 00000000..47598071 --- /dev/null +++ b/open_issues/bash.mdwn @@ -0,0 +1,47 @@ +[[!meta copyright="Copyright © 2009 Free Software Foundation, Inc."]] + +[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable +id="license" text="Permission is granted to copy, distribute and/or modify this +document under the terms of the GNU Free Documentation License, Version 1.2 or +any later version published by the Free Software Foundation; with no Invariant +Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license +is included in the section entitled [[GNU Free Documentation +License|/fdl]]."]]"""]] + +[[!tag open_issue_porting]] + +# *bash* 4.0 vs. typing `C-c` (*SIGINT*) + +Will show `-bash: echo: write error: (ipc/mig) wrong reply message ID` unter +certain conditions. + +After having noticed that this error doesn't occur if starting *bash* with +`--norc`, I isolated it to the following command in `.bashrc`: + + case $TERM in + xterm* | rxvt*) + PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME}:${PWD}\007"';; + esac + +... and indeed: + + tschwinge@flubber:~ $ echo "$TERM" -- "$PROMPT_COMMAND" + xterm -- echo -ne "\033]0;${USER}@${HOSTNAME}:${PWD}\007" + tschwinge@flubber:~ $ ^C + -bash: echo: write error: (ipc/mig) wrong reply message ID + tschwinge@flubber:~ $ PROMPT_COMMAND= + tschwinge@flubber:~ $ ^C + tschwinge@flubber:~ $ + + bash-4.0$ PROMPT_COMMAND='echo >&2 -n foo\ ' + foo bash-4.0$ ^C + + bash-4.0$ PROMPT_COMMAND='echo >&1 -n foo\ ' + foo bash-4.0$ ^C + bash: echo: write error: (ipc/mig) wrong reply message ID + + bash-4.0$ PROMPT_COMMAND='/bin/echo >&1 -n foo\ ' + foo bash-4.0$ ^C + bash: start_pipeline: pgrp pipe: (ipc/mig) wrong reply message ID + +So, there's something different with stdout in / after the SIGINT handler. diff --git a/open_issues/bash_vs_screen_vs_sigint.mdwn b/open_issues/bash_vs_screen_vs_sigint.mdwn index 47d79c65..9672041c 100644 --- a/open_issues/bash_vs_screen_vs_sigint.mdwn +++ b/open_issues/bash_vs_screen_vs_sigint.mdwn @@ -8,81 +8,5 @@ Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled [[GNU Free Documentation License|/fdl]]."]]"""]] -[[!tag open_issue_porting]] - -Typing `C-c` (*SIGINT*), different versions of *bash* and *screen* respond like -this: - - * GNU/Linux; Ubuntu package 3.2-5 / `$BASH_VERSION` is `3.2.48(1)-release` - * plain - * shell prompt: new line / prompt printed; `$?` is 1. - * `sleep 10` running: `^C` printed; SIGINT is sent; `$?` is 130. - * in a *screen* session (Ubuntu package 4.0.3-11ubuntu4): exactly the same. - - * GNU/Hurd; Debian package 3.2-6+b1 (equals 3.2-6) / `$BASH_VERSION` is `3.2.48(1)-release`; *libc0.3* Debian package 2.9-25 - * plain - * shell prompt: new line / prompt printed; `$?` is 1. - * `sleep 10` running: `^C` printed; SIGINT is sent; `$?` is 130. - * in a *screen* session (Debian package 4.0.3-11): exactly the same. - - This is equivalent to the GNU/Linux behavior. - - * GNU/Hurd; Debian package 4.0-4 / `$BASH_VERSION` is `4.0.28(1)-release`; *libc0.3* Debian package 2.9-25 - * plain - * shell prompt: `^C`, then new line, then **`-bash: echo: write error: (ipc/mig) wrong reply message ID`**, then new line / prompt printed; `$?` is 128. - * `sleep 10` running: `^C` printed, SIGINT is sent; `$?` is 130. - * in a *screen* session (Debian package 4.0.3-11) - * shell prompt: `^C`, then new line / prompt printed; `$?` is 128. - * `sleep 10` running: `^C` printed; SIGINT is sent; `$?` is 130. - - This differs from the behavior of the earlier *bash* version in the MIG reply - error in the not-*screen* case. The difference in command-line editing - mode, the displaying of `^C` (same on GNU/Linux), and / or the value 128 - for `$?` (same on GNU/Linux) is a bash 4.0 regression that has been fixed - for 4.1 already: - . - - * GNU/Hurd; Debian package 4.0-7 / `$BASH_VERSION` is `4.0.33(1)-release`; *libc0.3* Debian packages 2.9-19, 2.9-25, 2.9-27 - * plain - * shell prompt: `^C`, then new line, then **`-bash: echo: write error: (ipc/mig) wrong reply message ID`**, then new line / prompt printed; `$?` is 128. - * `sleep 10` running: `^C` printed; SIGINT is sent; `$?` is 130. - * in a *screen* session (Debian package 4.0.3-11) - * shell prompt: `^C`, then new line / prompt printed; `$?` is 128. - * `sleep 10` running: `^C` printed; SIGINT is sent; `$?` is 130. - - This is equivalent to the *bash* 4.0-4 / 4.0.28(1) behavior. - - * GNU/Hurd; Debian package 4.0-7 / `$BASH_VERSION` is `4.0.33(1)-release`; *libc0.3* Debian package 2.9-27 - * plain - * shell prompt: `^C`, then new line, then **`-bash: echo: write error: (ipc/mig) wrong reply message ID`**, then new line / prompt printed; `$?` is 128. - * `sleep 10` running: `^C` printed; SIGINT is sent; `$?` is 130. - * in a *screen* session (Debian package 4.0.3-14) - * shell prompt: **no reaction (nothing printed)**; `$?` thus is **unchanged**. - * `sleep 10` running: **`^C` printed**, SIGINT is **not** sent. - - The *screen* behavior differs -- [[!debbug 522689#38]]. - - -To sum up: - - * *screen*: new package causes that invokee doesn't react to `C-c` anymore. - - * *bash*: 4.0 packages have the MIG reply error. - - After having noticed that this error doesn't occur if starting *bash* with - `--norc`, I isolated it to the following command in `.bashrc`: - - case $TERM in - xterm* | rxvt*) - PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME}:${PWD}\007"';; - esac - - ... and indeed: - - tschwinge@flubber:~ $ echo "$TERM" -- "$PROMPT_COMMAND" - xterm -- echo -ne "\033]0;${USER}@${HOSTNAME}:${PWD}\007" - tschwinge@flubber:~ $ ^C - -bash: echo: write error: (ipc/mig) wrong reply message ID - tschwinge@flubber:~ $ PROMPT_COMMAND= - tschwinge@flubber:~ $ ^C - tschwinge@flubber:~ $ + * [[bash]] + * [[screen]] diff --git a/open_issues/screen.mdwn b/open_issues/screen.mdwn index cc2110ad..6ece5c40 100644 --- a/open_issues/screen.mdwn +++ b/open_issues/screen.mdwn @@ -10,6 +10,16 @@ License|/fdl]]."]]"""]] [[!tag open_issue_porting]] +Typing `C-c` (*SIGINT*) in a *screen* session (Debian package 4.0.3-14; -11 is +fine): + + * shell prompt: no reaction (nothing printed) + * `sleep 10` running: `^C` printed, but SIGINT is not sent. + +[[!debbug 522689#38]]. + +--- + Revisit this issue: [[!debbug 97343]] -- special handling of `TIOCSCTTY` depending on `__GNU__`. -- cgit v1.2.3 From e5ae3d177e3723d5a6aecf00c87a7f0e7f81818a Mon Sep 17 00:00:00 2001 From: lukeshu Date: Sun, 11 Oct 2009 16:43:26 +0000 Subject: spelling: `traing' -> `trailing' --- hurd/running/debian/faq/apt_umount.mdwn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hurd/running/debian/faq/apt_umount.mdwn b/hurd/running/debian/faq/apt_umount.mdwn index f2889f3e..db0dbfd1 100644 --- a/hurd/running/debian/faq/apt_umount.mdwn +++ b/hurd/running/debian/faq/apt_umount.mdwn @@ -22,4 +22,4 @@ Give executable permission to the script. # chmod +x /usr/bin/umount In `/etc/fstab` add a trailing `/` after cdrom like `/cdrom/` since apt uses a -traing `/`. +trailing `/`. -- cgit v1.2.3 From c2724866ae27469c32ac4c123c4fe727927d52f6 Mon Sep 17 00:00:00 2001 From: Thomas Schwinge Date: Tue, 13 Oct 2009 00:43:33 +0200 Subject: hurd/debugging/rpctrace: bug #20612 is fixed. --- hurd/debugging/rpctrace.mdwn | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/hurd/debugging/rpctrace.mdwn b/hurd/debugging/rpctrace.mdwn index 63b72ee0..46f40508 100644 --- a/hurd/debugging/rpctrace.mdwn +++ b/hurd/debugging/rpctrace.mdwn @@ -1,4 +1,5 @@ -[[!meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]] +[[!meta copyright="Copyright © 2007, 2008, 2009 Free Software Foundation, +Inc."]] [[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable id="license" text="Permission is granted to copy, distribute and/or modify this @@ -24,7 +25,6 @@ See `rpctrace --help` about how to use it. * -- terminated with `C-c` `rpctrace`d programs hang * -- more readable output -* -- heisenbug # TODO -- cgit v1.2.3