Home | History | Annotate | Line # | Download | only in lfs
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