(FILECREATED "11-Mar-85 17:42:29" ("compiled on " {ERIS}INTERMEZZO>SOURCES>LFALLOCATIONMAP.;2) " 7-Mar-85 12:37:06" tcompl'd in "INTERLISP-D 7-Mar-85 ..." dated " 7-Mar-85 13:57:43") (FILECREATED "11-Mar-85 17:41:02" {ERIS}INTERMEZZO>SOURCES>LFALLOCATIONMAP.;2 17093 changes to: (VARS LFALLOCATIONMAPCOMS) previous date: "16-Feb-85 18:32:01" {ERIS}INTERMEZZO>SOURCES>LFALLOCATIONMAP.;1) \VAMAllocPageGroupA0001 D1 (NAME ERRORSET P 11Q \INTERRUPTABLE P 10Q \INTERRUPTABLE P 0 \INTERRUPTABLE F 12Q vol F 13Q groupPtr F 14Q filePtr F 15Q RESETY) ? `hi ¿PWÈ^WÈ]õWYÈIÈõMWÈWÈõkÙýñ³*igggWlÐWlÐl( l WMWdÈMN ¥MkÔ]°±WlÐM ¿MkÔ½NkÔ¾MWÈWÈõkÙýñ³*i gggWlÐWlÐl( l NWZÈJÈõ ³WMWdÈMN ³›MW[ÈKÈõÙ_¿WlÐW\ÈLÈõOØ ¿WlWÐWÈXWÈWõO Ô ¿Wl]ÐM hci(466Q \PUTSWAPPEDFIXP 454Q \PUTSWAPPEDFIXP 450Q MINUS 424Q \PUTSWAPPEDFIXP 347Q \VAMAllocPage 344Q \VAMFilePageNumber 322Q EQP 301Q \LISPERROR 274Q PACKFILENAME.STRING 271Q U-CASE 266Q \PFFetchString 201Q \PUTSWAPPEDFIXP 156Q \VAMAllocPage 153Q \VAMFilePageNumber 132Q \LISPERROR 125Q PACKFILENAME.STRING 122Q U-CASE 117Q \PFFetchString 7 OBTAIN.MONITORLOCK) (407Q PageGroup 377Q PageGroup 357Q PageGroup 335Q FileDescriptor 310Q PageGroup 247Q DIRECTORY 244Q DSK 241Q HOST 172Q PageGroup 144Q FileDescriptor 100Q DIRECTORY 75Q DSK 72Q HOST 31Q PageGroup 2 \VAMmonitor) () \VAMAllocPageGroup D1 (P 1 RESETY P 0 LISPXHIST I 2 groupPtr I 1 filePtr I 0 vol F 3 LISPXHIST F 4 RESETVARSLST) "S!Tog ‘h‚gZ J“I(35Q ERROR! 30Q RESETRESTORE 16Q \VAMAllocPageGroupA0001) (24Q ERROR 13Q INTERNAL) ( 10Q (\VAMAllocPageGroupA0001)) \VAMFreePageGroupA0001 D1 (NAME ERRORSET P 0 \INTERRUPTABLE F 15Q vol F 16Q groupPtr F 17Q filePtr F 20Q RESETY) ß `hi ¿  W _YÈIÈõOZÈJÈõýñ¢±¬O[ÈKÈõkÙO\ÈLÈõO]ÈMÈõ OOó³)WOWdÈOO ¿OkÔ_¿OkÔ_¿°ÔWlWÐWÈXWÈWõO^ÈNÈõO_ÈOÈõÙÔ ¿Wl]ÐO_ÈOÈõWÈ^WÈ]õ ¿hc i(326Q \PUTSWAPPEDFIXP 323Q MIN 263Q \PUTSWAPPEDFIXP 164Q \VAMFreePage 161Q \VAMFilePageNumber 20Q \VAMAdjustGroup 7 OBTAIN.MONITORLOCK) (276Q PageGroup 245Q PageGroup 231Q PageGroup 150Q FileDescriptor 115Q PageGroup 101Q PageGroup 63Q PageGroup 41Q PageGroup 25Q PageGroup 2 \VAMmonitor) () \VAMFreePageGroup D1 (P 1 RESETY P 0 LISPXHIST I 2 groupPtr I 1 filePtr I 0 vol F 3 LISPXHIST F 4 RESETVARSLST) "S!Tog ‘h‚gZ J“I(35Q ERROR! 30Q RESETRESTORE 16Q \VAMFreePageGroupA0001) (24Q ERROR 13Q INTERNAL) ( 10Q (\VAMFreePageGroupA0001)) \VAMInitA0001 D1 (NAME ERRORSET F 0 RESETY) `hi ¿ci(13Q \VAMBufferInit 7 OBTAIN.MONITORLOCK) (2 \VAMmonitor) () \VAMInit D1 (P 1 RESETY P 0 LISPXHIST F 3 LISPXHIST F 4 RESETVARSLST) "S!Tog ‘h‚gZ J“I(35Q ERROR! 30Q RESETRESTORE 16Q \VAMInitA0001) (24Q ERROR 13Q INTERNAL) ( 10Q (\VAMInitA0001)) \VAMRecomputeFreePageCountA0001 D1 (NAME ERRORSET L (0 NIL) F 6 vol F 7 RESETY) j`hi ¿VlWÐVÈVÈõkij$IHó³5VhIg \jðµ L´L ]²JšVl]ÐI ¿hºM“KkØ»IkÔY°ËK ¿Vd ¿VÈXVÈWõci(134Q \PFPutLogicalVolumePage 126Q \PUTSWAPPEDFIXP 102Q \PUTSWAPPEDFIXP 65Q \FZEROP 47Q \VAMUpdateVAM 7 OBTAIN.MONITORLOCK) (44Q read 2 \VAMmonitor) () \VAMRecomputeFreePageCount D1 (P 1 RESETY P 0 LISPXHIST I 0 vol F 3 LISPXHIST F 4 RESETVARSLST) "S!Tog ‘h‚gZ J“I(35Q ERROR! 30Q RESETRESTORE 16Q \VAMRecomputeFreePageCountA0001) (24Q ERROR 13Q INTERNAL) ( 10Q (\VAMRecomputeFreePageCountA0001)) \VAMFilePageNumber D1 (L (2 filePageNumber 1 volumePageNumber 0 fileType)) )@dn'Að‘Bn'@ð³ú@dlð‘Alð‘j@nÿÿð³å(46Q SHOULDNT) NIL () \VAMAllocPage D1 (L (3 filePage# 2 filePtr 1 volPage# 0 vol)) >@BAg Hjðµ H´H ´`µl BCAH ¿Hih¿°ê(56Q \PFCreatePage 31Q \FZEROP 10Q \VAMUpdateVAM) (71Q \\DFSVAMpage.GLOBALRESOURCE 63Q \\DFSVAMpage.GLOBALRESOURCE 37Q \\DFSVAMpage.GLOBALRESOURCE 5 alloc) () \VAMUpdateVAM D1 (L (3 allocOrFree 2 page 1 filePtr 0 vol)) lBnÛBnÜlÛBlÜC@H [dIÐÈ\`lJÕàÐÉÉ]LMåjð¡k€j^Cdgð™¿LMä¼°gðšLMmÿæ弈Cgð£¿KIÐLÍN(141Q SHOULDNT 127Q \VAMMarkBufferDirty 106Q \VAMMarkBufferDirty 30Q \VAMGetVAMPageFor) (134Q read 113Q free 74Q alloc 42Q \MASKOUT.MARGIN) () \VAMFreePage D1 (L (3 filePageNumber 2 filePtr 1 volPageNumber 0 vol)) *`µl @AH ¿H@BAg hh¿°á(37Q \VAMUpdateVAM 20Q \PFCreateFreePage) (45Q \\DFSVAMpage.GLOBALRESOURCE 34Q free 25Q \\DFSVAMpage.GLOBALRESOURCE 2 \\DFSVAMpage.GLOBALRESOURCE) () \VAMAdjustGroup D1 (L (0 groupPtr)) T`@ 1HYÈIÈõjð²:HZÈJÈõjð™HlÐk°Hk ¿HlÐH[ÈKÈõkØ H(120Q \PUTSWAPPEDFIXP 70Q \PUTSWAPPEDFIXP 6 NCREATE2) (104Q PageGroup 75Q PageGroup 64Q PageGroup 52Q PageGroup 34Q PageGroup 15Q PageGroup 2 PageGroupTYPE#) () \VAMGetVAMPageFor D1 (L (1 VAMPage# 0 vol) P 1 \INTERRUPTABLE) G@ÈZ@ÈYõAØ`d¡ž`@ð˜`H ³¿@¿H¿``` `(101Q \PFGetAllocationMapPage 47Q \VAMBufferSave 42Q EQP) (104Q \VAMbuffer 76Q \VAMbuffer 73Q \VAMbufferVolumePage 70Q \VAMbufferVolume 64Q \VAMbufferVolumePage 57Q \VAMbufferVolume 36Q \VAMbufferVolumePage 30Q \VAMbufferVolume 16Q \VAMbufferVolumePage) () \VAMBufferInit D1 NIL l hddNIL (21Q \VAMbufferDirty 15Q \VAMbufferVolumePage 11Q \VAMbufferVolume 5 \VAMbuffer) () \VAMBufferSave D1 NIL "`d¡´`´``` h(33Q \PFPutAllocationMapPage) (37Q \VAMbufferDirty 30Q \VAMbuffer 25Q \VAMbufferVolumePage 22Q \VAMbufferVolume 15Q \VAMbufferDirty 2 \VAMbufferVolumePage) () \VAMMarkBufferDirty D1 NIL ihNIL (3 \VAMbufferDirty) () (PRETTYCOMPRINT LFALLOCATIONMAPCOMS) (RPAQQ LFALLOCATIONMAPCOMS ((* * Implements the 1108 file system volume file map. Very roughly translates {idun}pilot>private>volAllocMapImpl.mesa, but omits a number of dubious optimizations.) (* * Needed improvement 1: restructure so that low-level part of allocation is done a PageGroup at a time. That would (a) allow bitmap searching to be done somewhat faster (by just shifting a mask and comparing, rather than creating a new mask each time) and (b) more importantly allow disk accesses to be done a PageGroup at a time, once DISKDLION gets updated to allow quick page run access) (* * Needed improvement 2: Check old labels before allocating or deallocating a page, and abort & tell user to scavenge if the label is wrong.) (* * Needed improvement 3: Restructure interface with FILEIO so that a page can be allocated and written in one fell swoop. MFile/Pilot have a special interface for this.) (DECLARE: EVAL@COMPILE DONTCOPY (COMS (FILES (LOADCOMP) LFPILOTFILE) (FILES DECL ) (CONSTANTS (BITSPERPAGE 4096)))) (DECLARE: (LOCALVARS . T) (IGNOREDECL . T)) (* * Public routines) ( FNS \VAMAllocPageGroup \VAMFreePageGroup \VAMInit \VAMRecomputeFreePageCount) (* * Private routines:) (FNS \VAMFilePageNumber \VAMAllocPage \VAMUpdateVAM \VAMFreePage \VAMAdjustGroup) (RESOURCES \DFSVAMpage) (GLOBALVARS \VAMmonitor) (INITVARS (\VAMmonitor (CREATE.MONITORLOCK (QUOTE VAMmonitor)))) (* * buffer management) (FNS \VAMGetVAMPageFor \VAMBufferInit \VAMBufferSave \VAMMarkBufferDirty) ( GLOBALVARS \VAMbuffer \VAMbufferVolume \VAMbufferVolumePage \VAMbufferDirty) (* * Initialize VAM) (P ( \VAMInit)))) (DECLARE: DOEVAL@COMPILE DONTCOPY (LOCALVARS . T)) (DECLARE: DOEVAL@COMPILE DONTEVAL@LOAD DONTCOPY (RESETSAVE COMPILEIGNOREDECL (QUOTE T))) (PUTDEF (QUOTE \DFSVAMpage) (QUOTE RESOURCES) (QUOTE (NEW (create Page)))) (RPAQ? \VAMmonitor (CREATE.MONITORLOCK (QUOTE VAMmonitor))) (\VAMInit) (PUTPROPS LFALLOCATIONMAP COPYRIGHT ("Xerox Corporation" 1985)) NIL