diff options
-rw-r--r-- | hurd/translator.mdwn | 1 | ||||
-rw-r--r-- | hurd/translator/mtab.mdwn | 23 | ||||
-rw-r--r-- | hurd/translator/mtab/discussion.mdwn (renamed from community/gsoc/project_ideas/mtab/discussion.mdwn) | 64 | ||||
-rw-r--r-- | hurd/translator/procfs/jkoenig/discussion.mdwn | 5 | ||||
-rw-r--r-- | open_issues/libnetfs_passive_translators.mdwn | 2 | ||||
-rw-r--r-- | open_issues/mig_portable_rpc_declarations.mdwn | 6 | ||||
-rw-r--r-- | user/jkoenig/d-i.mdwn | 4 |
7 files changed, 89 insertions, 16 deletions
diff --git a/hurd/translator.mdwn b/hurd/translator.mdwn index da141dc2..52cd09f7 100644 --- a/hurd/translator.mdwn +++ b/hurd/translator.mdwn @@ -100,6 +100,7 @@ The [[concept|concepts]] of translators creates its own problems, too: * [[fatfs]] * [[ufs]] * [[magic]] +* [[mtab]] * [[unionfs]] * [[nfs]] * [[symlink]] diff --git a/hurd/translator/mtab.mdwn b/hurd/translator/mtab.mdwn new file mode 100644 index 00000000..8eca15b9 --- /dev/null +++ b/hurd/translator/mtab.mdwn @@ -0,0 +1,23 @@ +[[!meta copyright="Copyright © 2008, 2009, 2013 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]]."]]"""]] + +In traditional monolithic system, the kernel keeps track of all mounts; the +information is available through `/proc/mounts` (on Linux at least), and in a +very similar form in `/etc/mtab`. + +The Hurd on the other hand has a totally +[[decentralized_file_system|hurd/virtual_file_system]]. There is no single +entity involved in all mounts. Rather, only the parent file system to which a +mountpoint ([[hurd/translator]]) is attached is involved. As a result, there +is no central place keeping track of mounts. + +The `mtab` translator has been implemented; see the [[discussion]] subpage for +design considerations. diff --git a/community/gsoc/project_ideas/mtab/discussion.mdwn b/hurd/translator/mtab/discussion.mdwn index 716fb492..0734e1e6 100644 --- a/community/gsoc/project_ideas/mtab/discussion.mdwn +++ b/hurd/translator/mtab/discussion.mdwn @@ -1,4 +1,5 @@ -[[!meta copyright="Copyright © 2013 Free Software Foundation, Inc."]] +[[!meta copyright="Copyright © 2008, 2009, 2013 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 @@ -8,7 +9,57 @@ 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_hurd]] +[[!tag open_issue_documentation]] The following text needs to be updated. + +# Original Project Description + +As a consequence, there is currently no easy way to obtain a listing of all +mounted file systems. This also means that commands like `df` can only work on +explicitly specified mountpoints, instead of displaying the usual listing. + +One possible solution to this would be for the translator startup mechanism to +update the `mtab` on any `mount`/`unmount`, like in traditional systems. +However, there are some problems with this approach. Most notably: what to do +with passive translators, i.e., translators that are not presently running, but +set up to be started automatically whenever the node is accessed? Probably +these should be counted among the mounted filesystems; but how to handle the +`mtab` updates for a translator that is not started yet? Generally, being +centralized and event-based, this is a pretty inelegant, non-hurdish solution. + +A more promising approach is to have `mtab` exported by a special translator, +which gathers the necessary information on demand. This could work by +traversing the tree of translators, asking each one for mount points attached +to it. (Theoretically, it could also be done by just traversing *all* nodes, +checking each one for attached translators. That would be very inefficient, +though. Thus a special interface is probably required, that allows asking a +translator to list mount points only.) + +There are also some other issues to keep in mind. Traversing arbitrary +translators set by other users can be quite dangerous -- and it's probably not +very interesting anyways what private filesystems some other user has mounted. +But what about the global `/etc/mtab`? Should it list only root-owned +filesystems? Or should it create different listings depending on what user +contacts it?... + +That leads to a more generic question: which translators should be actually +listed? There are different kinds of translators: ranging from traditional +filesystems ([[disks|hurd/libdiskfs]] and other actual +[[stores|hurd/translator/storeio]]), but also purely virtual filesystems like +[[hurd/translator/ftpfs]] or [[hurd/translator/unionfs]], and even things that +have very little to do with a traditional filesystem, like a +[[gzip_translator|hurd/translator/storeio]], +[[mbox_translator|hurd/translator/mboxfs]], +[[xml_translator|hurd/translator/xmlfs]], or various device file translators... +Listing all of these in `/etc/mtab` would be pretty pointless, so some kind of +classification mechanism is necessary. By default it probably should list only +translators that claim to be real filesystems, though alternative views with +other filtering rules might be desirable. + +After taking decisions on the outstanding design questions, the student will +implement both the actual mtab translator, and the +necessary interface(s) for gathering the data. It requires getting a good +understanding of the translator mechanism and Hurd interfaces in general. + # IRC, freenode, #hurd, 2013-04-17 @@ -40,8 +91,7 @@ License|/fdl]]."]]"""]] <kuldeepdhaka> braunr, whats ur opinion? <pinotree> you don't need a mtab to "unmount" things on hurd <braunr> kuldeepdhaka: hum, have you read the project idea ? - <braunr> - http://darnassus.sceen.net/~hurd-web/community/gsoc/project_ideas/mtab/ + <braunr> A more promising approach is to have mtab exported by a special translator, which gathers the necessary information on demand. This could work by traversing the tree of translators, asking each one for mount @@ -125,9 +175,7 @@ In context of [[open_issues/mig_portable_rpc_declarations]]. <teythoon> so tell me about the more hurdish way of dealing with that issue <teythoon> creating a specialized translator for this? - <braunr> 11:45 < pinotree> there's also - http://darnassus.sceen.net/~hurd-web/community/gsoc/project_ideas/mtab/ - about that topic + <braunr> you need to avoid thinking with centralization in mind <braunr> the hurd is a distributed system in practice <braunr> i think proc is the only centralized component in there @@ -2070,3 +2118,5 @@ In context of [[open_issues/mig_portable_rpc_declarations]]. <teythoon> so it might be a problem with either libnetfs (which afaics has never supported passive translator records before) or procfs, but tbh I haven't investigated this yet + +[[open_issues/libnetfs_passive_translators]]. diff --git a/hurd/translator/procfs/jkoenig/discussion.mdwn b/hurd/translator/procfs/jkoenig/discussion.mdwn index 44b8cc77..fc071337 100644 --- a/hurd/translator/procfs/jkoenig/discussion.mdwn +++ b/hurd/translator/procfs/jkoenig/discussion.mdwn @@ -150,8 +150,7 @@ License|/fdl]]."]]"""]] <youpi> it "just" needs to be commited :) <antrik> in either case, it can't hurt to bring this up again :-) -[[community/gsoc/project_ideas/mtab/discussion]], *IRC, freenode, #hurd, -2013-09-07*. +[[mtab/discussion]], *IRC, freenode, #hurd, 2013-09-07*. # root group @@ -305,7 +304,7 @@ License|/fdl]]."]]"""]] i don't remember) < pinotree> not a strict need -See also [[community/gsoc/project_ideas/mtab]]. +A [[mtab]] translator now exists. ## IRC, freenode, #hurd, 2013-09-20 diff --git a/open_issues/libnetfs_passive_translators.mdwn b/open_issues/libnetfs_passive_translators.mdwn index db4c9005..c89d27f7 100644 --- a/open_issues/libnetfs_passive_translators.mdwn +++ b/open_issues/libnetfs_passive_translators.mdwn @@ -52,4 +52,4 @@ License|/fdl]]."]]"""]] <teythoon> 0 tmp/mounts <teythoon> and no mtab translator around either -[[community/gsoc/project_ideas/mtab/discussion]]. +[[hurd/translator/mtab/discussion]]. diff --git a/open_issues/mig_portable_rpc_declarations.mdwn b/open_issues/mig_portable_rpc_declarations.mdwn index 91838f60..ecfa06ae 100644 --- a/open_issues/mig_portable_rpc_declarations.mdwn +++ b/open_issues/mig_portable_rpc_declarations.mdwn @@ -69,8 +69,7 @@ License|/fdl]]."]]"""]] <teythoon> my use case is getting info about fs translators from init to procfs -[[community/gsoc/project_ideas/mtab]], -[[community/gsoc/project_ideas/mtab/discussion]]. +[[hurd/translator/mtab]], [[hurd/translator/mtab/discussion]]. <teythoon> should I go for an iterator like interface instead? <braunr> depends @@ -136,8 +135,7 @@ License|/fdl]]."]]"""]] top of mach <braunr> there is a lot of knowledge about mach ports in mig -[[community/gsoc/project_ideas/mtab]], -[[community/gsoc/project_ideas/mtab/discussion]]. +[[hurd/translator/mtab]], [[hurd/translator/mtab/discussion]]. <teythoon> but again I face the challenge of serializing a arbitrary sized list of arbitrary sized strings diff --git a/user/jkoenig/d-i.mdwn b/user/jkoenig/d-i.mdwn index 0b9f9f7d..9721b928 100644 --- a/user/jkoenig/d-i.mdwn +++ b/user/jkoenig/d-i.mdwn @@ -1,4 +1,4 @@ -[[!meta copyright="Copyright © 2010 Free Software Foundation, Inc."]] +[[!meta copyright="Copyright © 2010, 2013 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 @@ -92,6 +92,8 @@ I will be keeping track of my progress on this page. * (./) **base-installer**: (2010-06-26) * Work around non-existant /proc/mounts. + * A [[hurd/translator/mtab]] translator now exists; can use that for + [[`proc/mounts`|hurd/translator/procfs/jkoenig/discussion]]? * Firmlink /servers into /target after debootstrap to make the network available. |