]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/commit
Remove some of the pessimizations involving writing the fsi sector.
authorBruce Evans <bde@FreeBSD.org>
Sun, 23 Sep 2007 14:49:32 +0000 (14:49 +0000)
committerBruce Evans <bde@FreeBSD.org>
Sun, 23 Sep 2007 14:49:32 +0000 (14:49 +0000)
commited316d339f97a539334d453cb081ce16ac8d947a
treeb66babbdb423b091f34d1b6ccc43efeeb9473cde
parentf854db0bf589ae8e9365fc0e99fbb37b6461b790
Remove some of the pessimizations involving writing the fsi sector.
All active fields in fsi are advisory/optional, so we shouldn't do
extra work to make them valid at all times, but instead we write to
the fsi too often (we still do), and we searched for a free cluster
for fsinxtfree too often.

This commit just removes the whole search and its results, so that we
write out our in-core copy of fsinxtfree instead of writing a "fixed"
copy and clobbering our in-core copy.  This saves fixing 3 bugs:
- off-by-1 error for the end of the search, resulting in fsinxtfree
  not actually being adjusted iff only the last cluster is free.
- missing adjustment when no clusters are free.
- off-by-many error for the start of the search.  Starting the search
  at 0 instead of at (the in-core copy of) fsinxtfree did more than
  defeat the reasons for existence of fsinxtfree.  fsinxtfree exists
  mainly to avoid having to start at 0 for just the first search per
  mount, but has the side effect of reducing bias towards allocating
  near cluster 0.  The bias would normally only be generated by the
  first search per mount (if fsinxtfree is not supported), but since
  we also adjusted the in-core copy of fsinxtfree here, we were doing
  extra work to maximize the bias.

Approved by: re (kensmith)
sys/fs/msdosfs/msdosfs_fat.c