/[hurd]/hurd/TODO
ViewVC logotype

Contents of /hurd/TODO

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.102 - (show annotations) (download)
Tue Aug 21 04:34:54 2001 UTC (22 years, 8 months ago) by roland
Branch: MAIN
Changes since 1.101: +0 -4 lines
prune dead item

1 -*- Mode: Outline -*-
2
3 Before working on anything in this file, it's very important that you
4 make contact with the core Hurd developers. Things herein might be
5 slightly out of date or otherwise not easy to understand at first
6 glance. So write to <bug-hurd@gnu.org> first.
7
8 Priorities:
9 Check the end of this file for a task list referring to the next
10 public release.
11
12 Reported bugs generally have top priority.
13 Non-reported and non-encountered bugs (things we know don't work,
14 but don't really impede things) have lower priority.
15 Things in this file are ranked with one to three !; the more, the
16 higher priority.
17
18 See `tasks', the exported task list.
19
20 * Contents of =pending-changes.
21 * Make sure all the pieces of the Hurd have adequate version stuff. !
22 * syslogify everything !
23 * fix root dependencies in filesystem, network, etc. !
24 * Profile things !!
25 * Write coding standards suggestions for Hurd
26 * Implement file_fetch_dir
27 * Conform to coding standards (esp. CFLAGS setting)
28 * Internationalization !
29 * Use hostid in /etc/rc and mention it in installation instructions,
30 when suitable sh-utils is released.
31 * "user-friendly" naming scheme for /dev
32
33 * Fix emacs/src/unexelf.c to deal with occasional lack of mmap !
34
35 * Currently libshouldbeinlibc (idvec, etc) and password.defs and login
36 all think there is one user per-uid, and that ain't necessarily so.
37 Needs fixed. !
38
39 * Libraries
40
41 ** general:
42 *** implement all the pathconf things from Posix.1 right.
43 *** implement an soversion and symbol-versioning scheme similar to libc's.
44
45 ** libc:
46 *** (once vm_remap exists) implement mremap
47 *** when a session leader _exits, it should SIGHUP, TIOCDRAIN, and revoke. !!!
48 [it is still under discussion exactly where to address this,
49 so don't do it in libc yet]
50 *** Version of tmpfile that takes a directory
51 *** Hurd versions of tmpfile that don't create transient files !
52 *** flink
53 *** make sure profiling works !!
54 *** many functions that are syscalls in unix can potentially leak send rights
55 if a signal handler longjmp's out past them. They should probably all
56 be using HURD_CRITICAL_SECTION to avoid this. !!
57 ** items relocated from libc/hurd/STATUS:
58 *** We are not sure about possible races between setpgrp (A, pgrp) from
59 process B vs process A receiving proc_newids.
60 *** does sigaltstack/sigstack really work? -- NO
61 *** hurdmalloc kludge
62 *** think more about environment variable use viz security
63 *** SIGINFO handler?
64 *** itimers could be implemented better
65 *** mmap cannot do MAP_NOEXTEND.
66 *** unimplemented calls(?)
67 acct
68 getfh
69 getfsstat
70 madvise
71 mincore
72 mount
73 msync
74 sstk
75 swapon
76 unmount
77
78
79 ** libports:
80 *** Get rid of general `uninibited-rpcs' mechanism in libports, & just
81 special-case interrupt_operation. !
82
83 ** libstore:
84 *** Add lock protocol for mutable stores.
85 *** Creating/opening stores with STORE_INACTIVE should work (and then the hack
86 in storeio/dev.c should be removed).
87
88 ** libfsserver/libnetfs:
89 *** convert libnetfs to libfsserver
90
91 ** libnetfs
92 *** Support --readonly, --writable, and --update !
93 *** Implement dir_reparent.
94
95 ** libpager:
96 *** Put user-defined fns into a callback struct passed to pager_create. !
97 *** Make libpager paging interface able to read/write multiple pages at once.
98 *** Remove pagers from portset if there are too many incoming requests to
99 avoid forking too many threads. !
100 *** flush functions don't actually force pending delayed copies. (and in
101 fact, they seem to block if a delayed copy is wired down) !
102
103 ** libshouldbeinlibc:
104 *** Merge contents of libshouldbeinlibc that belong there into libc.
105 Rename the rest to libhurdutil or somesuch.
106
107 ** libdiskfs
108 *** file_chflags does not do proper permission checking (non-root isn't
109 supposed to be able to change the low bits)
110 *** Add the short-circuited-but-not-builtin translator startup code from
111 dir-lookup to fsys_getroot. Compare and match carefully these two
112 routines and then share common code.
113 *** Implement Posix O_SYNC, O_DSYNC, and O_RSYNC under the right
114 names; change libc header to match current Posix.
115 *** Handle dead name notifications on execserver ports. !
116 *** Deal correctly with setting the translators on /servers/exec.
117 *** Implement file_notice_changes.
118 *** Implement async I/O. !
119 *** Think of a way to have when-to-sync-nodes be more flexible so it can
120 be done right for each format.
121 *** Check when-to-sync-nodes carefully against BSD 4.4 ufs implementation. !
122 *** Provide for MNT_NODEV, etc. !
123 *** Implement io_restrict_auth correctly. !
124 *** Use off_t correctly. !!
125 *** Add a consistent message printing facility for filesystems to use
126 (syslog, but takes special care when the root file system?). !!
127 *** Some of diskfs_readonly_changed in ufs/ext2fs should be in generic
128 routines. !
129 *** diskfs_default_sync_interval should not be changed, keeping the option
130 setting elsewhere, so that diskfs_append_std_options can elide the
131 --sync=N option when it reflects the default setting.
132
133 ** libfshelp
134 *** Put functions here to deal with directory and file change notifications !!!
135 *** Translator startup should provide a more useful stdin/stdout than nothing !
136
137 ** libtrivfs
138 *** Allow for read/write/exec to be passed down.
139 *** Implement file_exec when appropriate. !!
140 *** Provide for the visible owner, etc., to be held in command-line args
141 instead of the underlying node, when it's important. !!
142
143 ** libps
144 *** Add option to print values times with a delay,
145 and to print values relative to last printing.
146 *** Whizzier columnation (autosizing?)
147 *** Make getters more robust.
148
149 * Servers
150 ** finish default pager in defpager !!
151 ** Implement goaway in all the servers that don't already have it. !!
152 ** (init) sleep on spinning gettys !
153 ** Add calls to various servers to return interesting statistical information.
154 ** Test new-fifo & make it fifo. !
155 ** Login/utmp?
156 ** fifos are flaky. ?? Details ??
157 ** implement io_revoke for things in trans/ that need it. !
158
159 ** pflocal
160 *** make peer addresses work?
161 *** implement io_revoke on sockets !
162
163 ** term:
164 *** find a way to reduce duplicate signals from repeated VINTR input
165 *** when a session leader exits, netbsd SIGHUP's the terminal, drains output,
166 and then revokes it. (See Posix.1-1996, p. 184, l. 64-68.)
167 *** when a session leader sets the ospeed to 0, netbsd SIGHUP's the termianl.
168 *** enforce session leader / controlling terminal uniqueness rules. !
169 (1: if a terminal is matched to a session, then another session
170 can't make it its controlling terminal;
171 2: tcsetpgrp to a pgrp that's not in the right sessions must
172 fail;
173 3: when a session leader exits, the association has to be torn
174 down; bsd does SIGHUP + drain + revoke.)
175
176 ** exec:
177 *** either resurrect or excise BFD exec server
178 (needs stdio magic converted to use libio when libc converts)
179
180 ** proc:
181 *** Add a version of proc_wait usable by non-parent processes, and use it in
182 gdb; maybe just a flag WNOREAP to proc_wait that doesn't reap and allows
183 anyone to use it. !!
184 *** Add proc_get_tty() [returns tty opened with no flags], so that ps can be
185 non-suid. !
186 *** add timeouts to all the msg_* calls proc makes. !
187
188 ** pfinet
189 *** Allow multiple pfinets to arp on the same ethernet interface for different
190 IP addresses. !!
191 *** Diagnose why shutdown doesn't close TCP channels properly or reliably. !
192 *** select for read on a UDP socket seems never to return. !!!
193 *** Undefined functions at the end of pfinet/io-ops.c. !!
194 *** Implement io_revoke on sockets. !
195
196 ** nfs
197 *** Implement async I/O !!
198 *** Finish work to turn on paging. !!
199 *** Implement TCP nfs. !
200 *** Implement V3 nfs.
201 *** Implement nqnfs. !
202 *** Add Hurd-specific calls. !!
203 *** errors in mount_root should get reflected more usefully to users. !
204
205 ** storeio:
206 *** Make a server (/servers/storeio?) to share multiple storeio nodes
207 *** Serverify, ala new-fifo.
208 *** implement io_revoke !
209
210 ** ufs:
211 *** Implement clustering, a la 4.4-lite sys/kern/vfs_cluster.c.
212 *** Make file_get_storage_info work for files with indirect blocks. !!
213 *** Optimizations:
214 pager.c/inode.c/libdiskfs count pager refs separately and then save
215 mappings in _diskfs_rdwr_internal and dir.c !
216 *** Problems with DT_* hack: !
217 **** Fix multiple-links DT_* bug.
218 **** Deal with change of type which should update directory.
219 **** Type is also wrong for translated nodes...
220 *** Roland sez: ENOSPC detection flaky in ufs. Try write of >page,
221 non-page-multiple, when free space allows write size but not
222 round_page (write size).
223
224 ** ext2fs
225 *** Try to write directories with 512-byte record boundaries. !!
226 *** Maybe file_pager_write_page should be able to accurately reproduce holes
227 *** Add byte-swapping. !!
228 *** If the target of a symlink is the empty string, stat seems to spin forever !!!
229
230 ** crash
231 *** Write core files. !!
232
233 ** arla -- port it
234
235
236 * Utilities
237 ** Make id, et. al. work with no/multiple uids. !!!
238 ** Make things work with the `nobody' mode bits: chmod, ls, ... !
239 ** Make things work with filesystem extensions (author, etc.): ls!!!
240 ** Make things work better with translators, e.g., tar... !!!
241 ** Fix bash to turn on interrupts around syscalls more generally,
242 especially chdir. !!
243 ** talk doesn't work !!
244 ** login: Make --retry work correctly when invoked via a suid shell
245 script by other than root (it doesn't now if the script specifies
246 --retry="$0" because the exec server will use /dev/fd/N for name,
247 and child_lookup() doesn't supply more than fds 0-2). !!
248 ** Make w use utmp's tty instead of the process's
249
250 ** fsck:
251 *** fsck should use fsys_get_options returned device instead of /etc/fstab !!
252
253 ** settrans:
254 *** needs an option to make the active go away without using goaway. !
255
256 ** ps:
257 *** ps should timeout quickly (one second?) on non-responsive message ports. !
258 *** help displays for: stat letters, format specs.
259 *** --match option?
260 *** fetch and print task (and thread?) startup times.
261
262 ** gdb:
263 *** Add various mach convenience features (vminfo, &c). !!
264 *** Be even more vigilant about noticing new threads. In particular:
265 **** For mach-indep thread commands, before validating against
266 internal thread list. !!!
267 *** read core files !!
268 *** Gdb doesn't work right if it doesn't have permission to frob the
269 inferior process (for instance, if it's a set[ug]id program), but
270 doesn't give a meaningful error message. Try `break main' in /bin/login.
271
272 ** nfsd
273 *** Implement TCP nfs. !
274 *** Implement V3 nfs. !
275 *** Implement nqnfs. !
276 *** Add Hurd-specific calls. !!
277 *** writes don't seem to work properly !!!
278 *** Report statfs correctly. !!
279
280 * Mach:
281 ** Have the at-close actions on devices be more directly controllable
282 by users by deleting the current at-close actions and replacing
283 them with suitable device_set_status calls.
284 ** Specify and implement vm_remap.
285
286 ======
287
288 ???
289 [I'm not sure of the preconditions for this; it usually seems to happen to
290 new login shells (but not often enough to really get a handle on it).
291 If the command is repeated, then it usually works correctly.]
292 login> ps aux|head
293 bash: /bin/head: (ipc/send) invalid msg-header
294 Broken pipe
295 [bash only seems to print error messages in this particular format if an
296 execve fails]
297
298 I've also had it happen in shells that have been around a while. -thomas
299
300 I just saw it happen in make output; there the particular error
301 happens only when execvp fails. -thomas
302 ???
303
304 * Next release:

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26