diff options
-rw-r--r-- | community/meetings.mdwn | 5 | ||||
-rw-r--r-- | community/meetings/fosdem_2012.mdwn | 8 | ||||
-rw-r--r-- | community/meetings/ghm2012.mdwn | 13 | ||||
-rw-r--r-- | hurd/translator/short-circuiting.mdwn | 8 | ||||
-rw-r--r-- | open_issues/settrans_directory_symlink.mdwn | 52 |
5 files changed, 77 insertions, 9 deletions
diff --git a/community/meetings.mdwn b/community/meetings.mdwn index 4ae52a1a..19c5a533 100644 --- a/community/meetings.mdwn +++ b/community/meetings.mdwn @@ -1,4 +1,4 @@ -[[!meta copyright="Copyright © 2007, 2008, 2009, 2010, 2011 Free Software +[[!meta copyright="Copyright © 2007, 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc."]] [[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable @@ -16,12 +16,13 @@ License|/fdl]]."]]"""]] ## In the Future - * [[FOSDEM_2012]] + * [[GNU Hackers Meeting, 2012, Düsseldorf|ghm2012]] * [[Self-organised]] # Past + * [[FOSDEM_2012]] * [[FrOSCon_2011]] * [[GNU Hackers Meeting, 2011, Paris|ghm2011]] * [[FOSDEM_2011]] diff --git a/community/meetings/fosdem_2012.mdwn b/community/meetings/fosdem_2012.mdwn index b6f31efc..8143e236 100644 --- a/community/meetings/fosdem_2012.mdwn +++ b/community/meetings/fosdem_2012.mdwn @@ -1,5 +1,5 @@ -[[!meta copyright="Copyright © 2006, 2007, 2008, 2009, 2010, 2011 Free Software -Foundation, Inc."]] +[[!meta copyright="Copyright © 2006, 2007, 2008, 2009, 2010, 2011, 2012 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 @@ -22,10 +22,10 @@ Bruxelles. [[!table class="table_style_1" data=""" "Name","Attending","Arrival","Return","Share room with us" "[[Maksym Planeta]]","no" -"Olaf Buddenhagen","most likely","","","yes" +"Olaf Buddenhagen","yes","","","yes" "Richard Braun","no" "Svante Signell","no" -"[[Thomas Schwinge|tschwinge]]","will try to","","","yes" +"[[Thomas Schwinge|tschwinge]]","no" """]] diff --git a/community/meetings/ghm2012.mdwn b/community/meetings/ghm2012.mdwn new file mode 100644 index 00000000..0e3c8cd5 --- /dev/null +++ b/community/meetings/ghm2012.mdwn @@ -0,0 +1,13 @@ +[[!meta copyright="Copyright © 2012 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="GNU Hackers Meeting, 2012, Düsseldorf"]] + +<http://www.gnu.org/ghm/2012/ddorf/> diff --git a/hurd/translator/short-circuiting.mdwn b/hurd/translator/short-circuiting.mdwn index 9de9f7b8..6f608fb2 100644 --- a/hurd/translator/short-circuiting.mdwn +++ b/hurd/translator/short-circuiting.mdwn @@ -1,12 +1,12 @@ -[[!meta copyright="Copyright © 2009 Free Software Foundation, Inc."]] +[[!meta copyright="Copyright © 2009, 2012 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]]."]]"""]] +is included in the section entitled [[GNU Free Documentation +License|/fdl]]."]]"""]] In traditional [[Unix]], file systems contain special files. These are: symbolic links, character devices, block devices, named pipes, and @@ -60,6 +60,8 @@ To make sure that you use one of these translators, there by bypassing the short-circuiting mechanism, you can either start it as an active translator, or use a different path from the one in `hurd/path.h`, e.g. `settrans bar /hurd/./symlink foo`. +There is also a `FS_TRANS_FORCE` flag defined for the `file_set_translator` +RPCs, but it currently isn't set from anywhere. The best example of how short-circuiting is implemented can be found in [[`libdiskfs`|libdiskfs]]. Notice how it detects if a translator to store diff --git a/open_issues/settrans_directory_symlink.mdwn b/open_issues/settrans_directory_symlink.mdwn new file mode 100644 index 00000000..86148a52 --- /dev/null +++ b/open_issues/settrans_directory_symlink.mdwn @@ -0,0 +1,52 @@ +[[!meta copyright="Copyright © 2012 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_hurd]] + +This works: + + $ touch a && settrans a /hurd/symlink b + +This doesn't: + + $ mkdir a && settrans a /hurd/symlink b + settrans: a: Is a directory + +It's the same `file_set_translator` RPC both times, and it's [[translator +short-circuiting|hurd/translator/short-circuiting]] which makes the latter one +fail: + +`libdiskfs/file-set-trans.c`: + + [...] + /* Set passive translator */ + if (passive_flags & FS_TRANS_SET) + { + if (!(passive_flags & FS_TRANS_FORCE)) + { + /* Handle the short-circuited translators */ + mode_t newmode = 0; + + if (diskfs_shortcut_symlink && !strcmp (passive, _HURD_SYMLINK)) + newmode = S_IFLNK; + [...] + + if (newmode) + { + if (S_ISDIR (np->dn_stat.st_mode)) + { + /* We can't allow this, because if the mode of the directory + changes, the links will be lost. Perhaps it might be + allowed for empty directories, but that's too much of a + pain. */ + mutex_unlock (&np->lock); + return EISDIR; + } + [...] |