1. 08 Jun, 2018 1 commit
    • Robert Sprowson's avatar
      Docs update · 04030b45
      Robert Sprowson authored
      Having disassembled various old copies of FileCore, make a note of the most likely reason it declares with fsinfo_dontuseload to maximise the use of background transfer buffers.
      Not tagged.
      04030b45
  2. 01 Apr, 2013 1 commit
    • Robert Sprowson's avatar
      Fix for mistargetted write with a file size > 2G when a background scatter... · cf85a5d6
      Robert Sprowson authored
      Fix for mistargetted write with a file size > 2G when a background scatter list straddles a fragment
      
      When large transfers are being buffered to be written in the background they are attached to the Fcb without considering how the underlying disc fragments are lined up.
      When the background process grabs a handful of buffers to build into a scatter list to pass to the low level DiscOp it picks the head of the list and goes forward (SkipWriteBehind) to the fragment end and back (BackwardSkipWriteBehind).
      However, BackwardsSkipWriteBehind uses DefFileFrag which substitutes a default offset of 0, and the signed compare resulted in this being left as the believed start of fragment.
      In turn, far too many buffers got associated with the fragment, and written to the wrong place on the disc.
      In general this doesn't occur, but if the group of buffers happens to straddle a fragment, and that group of buffers is > 2G, the signed compare would trip up.
      As fsbash uses the same random number seed this conspired that testing the same drive twice (with and without background transfers enabled) would appear to pass the integrity check step. A new harddisc was used to show this up.
      
      FileCore80.s: Recoded the compare to be in sectors, so 4G files aren't top bit set, but shared files not at the fragment start still are.
      Docs/AdfsBuffers: Added some notes before I forget what I just wrote meant.
      
      
      Version 3.58. Tagged as 'FileCore-3_58'
      cf85a5d6
  3. 25 Mar, 2013 1 commit
    • Robert Sprowson's avatar
      Reenable background transfer support when BigFiles is {TRUE} · 7a9d7b7d
      Robert Sprowson authored
      BigDirCode.s: Retire BigDirFix switch, it wasn't actually a fix, it was more that the directory format was changed early in development, but there's no point keeping support for the prototype any more
      FileCore45.s/FileCore25.s/FileCore31.s/FileCore35.s/DebugOpts.s: Retire BigDirFix
      Defns.s: Shock addition of some comments
      FileCore.s: Manual inclusion of CPU/Arch no longer needed
      FileCore70.s: Crucially apply the same 1k dead band to the FileSwitch "write zeros" entry point, since it (along with Get/PutBytes) are the only places file offsets get passed
      FileCore80.s: Lots of tedious and subtle boundary cases fixed
      InitDieSvc.s: Removed the disabling switch
      doc/BigDisc/ADFSBuffer: Detail what the BufFlags mean
      
      Tested on ADFS (the only background-transferring filing system about) with LFAUs of 2k, 4k, 8k, 16k and bashing 65536 iterations.
      
      Version 3.57. Tagged as 'FileCore-3_57'
      7a9d7b7d
  4. 05 Nov, 1996 1 commit