TODO revision 1.1.1.1 1 1.1.1.1 fvdl # @(#)TODO 8.1 (Berkeley) 6/11/93
2 1.1 mycroft
3 1.1 mycroft NOTE: Changed the lookup on a page of inodes to search from the back
4 1.1 mycroft in case the same inode gets written twice on the same page.
5 1.1 mycroft
6 1.1 mycroft Make sure that if you are writing a file, but not all the blocks
7 1.1 mycroft make it into a single segment, that you do not write the inode in
8 1.1 mycroft that segment.
9 1.1 mycroft
10 1.1 mycroft Keith:
11 1.1 mycroft Why not delete the lfs_bmapv call, just mark everything dirty
12 1.1 mycroft that isn't deleted/truncated? Get some numbers about
13 1.1 mycroft what percentage of the stuff that the cleaner thinks
14 1.1 mycroft might be live is live. If it's high, get rid of lfs_bmapv.
15 1.1 mycroft
16 1.1 mycroft There is a nasty problem in that it may take *more* room to write
17 1.1 mycroft the data to clean a segment than is returned by the new segment
18 1.1 mycroft because of indirect blocks in segment 2 being dirtied by the data
19 1.1 mycroft being copied into the log from segment 1. The suggested solution
20 1.1 mycroft at this point is to detect it when we have no space left on the
21 1.1 mycroft filesystem, write the extra data into the last segment (leaving
22 1.1 mycroft no clean ones), make it a checkpoint and shut down the file system
23 1.1 mycroft for fixing by a utility reading the raw partition. Argument is
24 1.1 mycroft that this should never happen and is practically impossible to fix
25 1.1 mycroft since the cleaner would have to theoretically build a model of the
26 1.1 mycroft entire filesystem in memory to detect the condition occurring.
27 1.1 mycroft A file coalescing cleaner will help avoid the problem, and one
28 1.1 mycroft that reads/writes from the raw disk could fix it.
29 1.1 mycroft
30 1.1 mycroft DONE Currently, inodes are being flushed to disk synchronously upon
31 1.1 mycroft creation -- see ufs_makeinode. However, only the inode
32 1.1 mycroft is flushed, the directory "name" is written using VOP_BWRITE,
33 1.1 mycroft so it's not synchronous. Possible solutions: 1: get some
34 1.1 mycroft ordering in the writes so that inode/directory entries get
35 1.1 mycroft stuffed into the same segment. 2: do both synchronously
36 1.1 mycroft 3: add Mendel's information into the stream so we log
37 1.1 mycroft creation/deletion of inodes. 4: do some form of partial
38 1.1 mycroft segment when changing the inode (creation/deletion/rename).
39 1.1 mycroft DONE Fix i_block increment for indirect blocks.
40 1.1 mycroft If the file system is tar'd, extracted on top of another LFS, the
41 1.1 mycroft IFILE ain't worth diddly. Is the cleaner writing the IFILE?
42 1.1 mycroft If not, let's make it read-only.
43 1.1 mycroft DONE Delete unnecessary source from utils in main-line source tree.
44 1.1 mycroft DONE Make sure that we're counting meta blocks in the inode i_block count.
45 1.1 mycroft Overlap the version and nextfree fields in the IFILE
46 1.1 mycroft DONE Vinvalbuf (Kirk):
47 1.1 mycroft Why writing blocks that are no longer useful?
48 1.1 mycroft Are the semantics of close such that blocks have to be flushed?
49 1.1 mycroft How specify in the buf chain the blocks that don't need
50 1.1 mycroft to be written? (Different numbering of indirect blocks.)
51 1.1 mycroft
52 1.1 mycroft Margo:
53 1.1 mycroft Change so that only search one sector of inode block file for the
54 1.1 mycroft inode by using sector addresses in the ifile instead of
55 1.1 mycroft logical disk addresses.
56 1.1 mycroft Fix the use of the ifile version field to use the generation
57 1.1 mycroft number instead.
58 1.1 mycroft DONE Unmount; not doing a bgetvp (VHOLD) in lfs_newbuf call.
59 1.1 mycroft DONE Document in the README file where the checkpoint information is
60 1.1 mycroft on disk.
61 1.1 mycroft Variable block sizes (Margo/Keith).
62 1.1 mycroft Switch the byte accounting to sector accounting.
63 1.1 mycroft DONE Check lfs.h and make sure that the #defines/structures are all
64 1.1 mycroft actually needed.
65 1.1 mycroft DONE Add a check in lfs_segment.c so that if the segment is empty,
66 1.1 mycroft we don't write it.
67 1.1 mycroft Need to keep vnode v_numoutput up to date for pending writes?
68 1.1 mycroft DONE USENIX paper (Carl/Margo).
69 1.1 mycroft
70 1.1 mycroft
71 1.1 mycroft Evelyn:
72 1.1 mycroft lfsck: If delete a file that's being executed, the version number
73 1.1 mycroft isn't updated, and lfsck has to figure this out; case is the same as if have an inode that no directory references,
74 1.1 mycroft so the file should be reattached into lost+found.
75 1.1 mycroft Recovery/fsck.
76 1.1 mycroft
77 1.1 mycroft Carl:
78 1.1 mycroft Investigate: clustering of reads (if blocks in the segment are ordered,
79 1.1 mycroft should read them all) and writes (McVoy paper).
80 1.1 mycroft Investigate: should the access time be part of the IFILE:
81 1.1 mycroft pro: theoretically, saves disk writes
82 1.1 mycroft con: cacheing inodes should obviate this advantage
83 1.1 mycroft the IFILE is already humongous
84 1.1 mycroft Cleaner.
85 1.1 mycroft Port to OSF/1 (Carl/Keith).
86 1.1 mycroft Currently there's no notion of write error checking.
87 1.1 mycroft + Failed data/inode writes should be rescheduled (kernel level
88 1.1 mycroft bad blocking).
89 1.1 mycroft + Failed superblock writes should cause selection of new
90 1.1 mycroft superblock for checkpointing.
91 1.1 mycroft
92 1.1 mycroft FUTURE FANTASIES: ============
93 1.1 mycroft
94 1.1 mycroft + unrm, versioning
95 1.1 mycroft + transactions
96 1.1 mycroft + extended cleaner policies (hot/cold data, data placement)
97 1.1 mycroft
98 1.1 mycroft ==============================
99 1.1 mycroft Problem with the concept of multiple buffer headers referencing the segment:
100 1.1 mycroft Positives:
101 1.1 mycroft Don't lock down 1 segment per file system of physical memory.
102 1.1 mycroft Don't copy from buffers to segment memory.
103 1.1 mycroft Don't tie down the bus to transfer 1M.
104 1.1 mycroft Works on controllers supporting less than large transfers.
105 1.1 mycroft Disk can start writing immediately instead of waiting 1/2 rotation
106 1.1 mycroft and the full transfer.
107 1.1 mycroft Negatives:
108 1.1 mycroft Have to do segment write then segment summary write, since the latter
109 1.1 mycroft is what verifies that the segment is okay. (Is there another way
110 1.1 mycroft to do this?)
111 1.1 mycroft ==============================
112 1.1 mycroft
113 1.1 mycroft The algorithm for selecting the disk addresses of the super-blocks
114 1.1 mycroft has to be available to the user program which checks the file system.
115 1.1 mycroft
116 1.1 mycroft (Currently in newfs, becomes a common subroutine.)
117