TODO revision 1.1
11.1Smycroft# from: @(#)TODO 8.1 (Berkeley) 6/11/93 21.1Smycroft# $Id: TODO,v 1.1 1994/06/08 11:42:17 mycroft Exp $ 31.1Smycroft 41.1SmycroftNOTE: Changed the lookup on a page of inodes to search from the back 51.1Smycroftin case the same inode gets written twice on the same page. 61.1Smycroft 71.1SmycroftMake sure that if you are writing a file, but not all the blocks 81.1Smycroftmake it into a single segment, that you do not write the inode in 91.1Smycroftthat segment. 101.1Smycroft 111.1SmycroftKeith: 121.1Smycroft Why not delete the lfs_bmapv call, just mark everything dirty 131.1Smycroft that isn't deleted/truncated? Get some numbers about 141.1Smycroft what percentage of the stuff that the cleaner thinks 151.1Smycroft might be live is live. If it's high, get rid of lfs_bmapv. 161.1Smycroft 171.1Smycroft There is a nasty problem in that it may take *more* room to write 181.1Smycroft the data to clean a segment than is returned by the new segment 191.1Smycroft because of indirect blocks in segment 2 being dirtied by the data 201.1Smycroft being copied into the log from segment 1. The suggested solution 211.1Smycroft at this point is to detect it when we have no space left on the 221.1Smycroft filesystem, write the extra data into the last segment (leaving 231.1Smycroft no clean ones), make it a checkpoint and shut down the file system 241.1Smycroft for fixing by a utility reading the raw partition. Argument is 251.1Smycroft that this should never happen and is practically impossible to fix 261.1Smycroft since the cleaner would have to theoretically build a model of the 271.1Smycroft entire filesystem in memory to detect the condition occurring. 281.1Smycroft A file coalescing cleaner will help avoid the problem, and one 291.1Smycroft that reads/writes from the raw disk could fix it. 301.1Smycroft 311.1SmycroftDONE Currently, inodes are being flushed to disk synchronously upon 321.1Smycroft creation -- see ufs_makeinode. However, only the inode 331.1Smycroft is flushed, the directory "name" is written using VOP_BWRITE, 341.1Smycroft so it's not synchronous. Possible solutions: 1: get some 351.1Smycroft ordering in the writes so that inode/directory entries get 361.1Smycroft stuffed into the same segment. 2: do both synchronously 371.1Smycroft 3: add Mendel's information into the stream so we log 381.1Smycroft creation/deletion of inodes. 4: do some form of partial 391.1Smycroft segment when changing the inode (creation/deletion/rename). 401.1SmycroftDONE Fix i_block increment for indirect blocks. 411.1Smycroft If the file system is tar'd, extracted on top of another LFS, the 421.1Smycroft IFILE ain't worth diddly. Is the cleaner writing the IFILE? 431.1Smycroft If not, let's make it read-only. 441.1SmycroftDONE Delete unnecessary source from utils in main-line source tree. 451.1SmycroftDONE Make sure that we're counting meta blocks in the inode i_block count. 461.1Smycroft Overlap the version and nextfree fields in the IFILE 471.1SmycroftDONE Vinvalbuf (Kirk): 481.1Smycroft Why writing blocks that are no longer useful? 491.1Smycroft Are the semantics of close such that blocks have to be flushed? 501.1Smycroft How specify in the buf chain the blocks that don't need 511.1Smycroft to be written? (Different numbering of indirect blocks.) 521.1Smycroft 531.1SmycroftMargo: 541.1Smycroft Change so that only search one sector of inode block file for the 551.1Smycroft inode by using sector addresses in the ifile instead of 561.1Smycroft logical disk addresses. 571.1Smycroft Fix the use of the ifile version field to use the generation 581.1Smycroft number instead. 591.1SmycroftDONE Unmount; not doing a bgetvp (VHOLD) in lfs_newbuf call. 601.1SmycroftDONE Document in the README file where the checkpoint information is 611.1Smycroft on disk. 621.1Smycroft Variable block sizes (Margo/Keith). 631.1Smycroft Switch the byte accounting to sector accounting. 641.1SmycroftDONE Check lfs.h and make sure that the #defines/structures are all 651.1Smycroft actually needed. 661.1SmycroftDONE Add a check in lfs_segment.c so that if the segment is empty, 671.1Smycroft we don't write it. 681.1Smycroft Need to keep vnode v_numoutput up to date for pending writes? 691.1SmycroftDONE USENIX paper (Carl/Margo). 701.1Smycroft 711.1Smycroft 721.1SmycroftEvelyn: 731.1Smycroft lfsck: If delete a file that's being executed, the version number 741.1Smycroft isn't updated, and lfsck has to figure this out; case is the same as if have an inode that no directory references, 751.1Smycroft so the file should be reattached into lost+found. 761.1Smycroft Recovery/fsck. 771.1Smycroft 781.1SmycroftCarl: 791.1Smycroft Investigate: clustering of reads (if blocks in the segment are ordered, 801.1Smycroft should read them all) and writes (McVoy paper). 811.1Smycroft Investigate: should the access time be part of the IFILE: 821.1Smycroft pro: theoretically, saves disk writes 831.1Smycroft con: cacheing inodes should obviate this advantage 841.1Smycroft the IFILE is already humongous 851.1Smycroft Cleaner. 861.1Smycroft Port to OSF/1 (Carl/Keith). 871.1Smycroft Currently there's no notion of write error checking. 881.1Smycroft + Failed data/inode writes should be rescheduled (kernel level 891.1Smycroft bad blocking). 901.1Smycroft + Failed superblock writes should cause selection of new 911.1Smycroft superblock for checkpointing. 921.1Smycroft 931.1SmycroftFUTURE FANTASIES: ============ 941.1Smycroft 951.1Smycroft+ unrm, versioning 961.1Smycroft+ transactions 971.1Smycroft+ extended cleaner policies (hot/cold data, data placement) 981.1Smycroft 991.1Smycroft============================== 1001.1SmycroftProblem with the concept of multiple buffer headers referencing the segment: 1011.1SmycroftPositives: 1021.1Smycroft Don't lock down 1 segment per file system of physical memory. 1031.1Smycroft Don't copy from buffers to segment memory. 1041.1Smycroft Don't tie down the bus to transfer 1M. 1051.1Smycroft Works on controllers supporting less than large transfers. 1061.1Smycroft Disk can start writing immediately instead of waiting 1/2 rotation 1071.1Smycroft and the full transfer. 1081.1SmycroftNegatives: 1091.1Smycroft Have to do segment write then segment summary write, since the latter 1101.1Smycroft is what verifies that the segment is okay. (Is there another way 1111.1Smycroft to do this?) 1121.1Smycroft============================== 1131.1Smycroft 1141.1SmycroftThe algorithm for selecting the disk addresses of the super-blocks 1151.1Smycrofthas to be available to the user program which checks the file system. 1161.1Smycroft 1171.1Smycroft(Currently in newfs, becomes a common subroutine.) 118