[bookport] Re: POSSIBLE FILESYSTEM HANDLING BUG INBOOKPORT FIRMWARE 2.X?

  • From: David Justice <dljustice@xxxxxxxx>
  • To: bookport@xxxxxxxxxxxxx
  • Date: Thu, 13 Oct 2005 09:49:32 -0400

Whether or not the discussed bug exists, the root directory limitation does. Given that and your statement that a lot of BP users are ignorant about folders, a modification of Chris hill's suggestion could have saved a lot of grief.

You could force the use of a single sub-directory called BP. Both the BookPort and the transfer software could be set so that the user could not back out of this directory.

At 08:30 AM 10/13/2005, you wrote:

This could be a serious bug, and we want to fix it if it is, but your
suggestion to not do that is a good one if the user actually knows what
is going on.  I'm afraid, however, that there are a lot of new Book Port
users who don't even know about folders yet.


>>> dljustice@xxxxxxxx Thursday, October 13, 2005 8:24:29 AM >>> Your message reminded me of an old joke ... "Doctor doctor it hurts when I do this ..."

Now I am indeed not making light of the problem, but the punch line
in either case is the same -- don't do that.

If the problem occurs only if one places too many files in the root
directory, then place folders (A.K.A. sub-directories) in the root
directory instead.  Doing thus, you not only would avoid the stated
problem, you could better organize the contents of your flash card
and make accessing that content easier.

I am not saying that the problem need not be fixed, but if it
manifests itself only under the conditions you have stated, then it
need not be encountered.



At 06:22 AM 10/13/2005, you wrote:
>         It's been a while since anyone has written on this topic, but
I
>believe I have more data points to throw into the frey, and a
suggested
>change to the Bookport firmware which might make the problem more
obvious,
>and thus avoidable.
>         In my previous message, I said the problem appeared to have
> to do with
>the bookport interpreting deleted files as index files and thereby
>corrupting its internal memory as part of that process.  I now believe
this
>behavior is restricted to the root directory of the current CF card,
and,
>specifically, when the root directory is nearly full.
>         For those of you who don't know, I'll fill in some details
> that I hope
>will make things more clear.  Microsoft, when they designed the FAT16
>filesystem, made the root directory a fixed size.  The root directory
of a
>FAT16 filesystem cannot contain more than 512 file names of 8,3 in
length.
>When they released Windows 95, and added long file name support to
the
>FAT16 filesystem, they did it by writing the longer file names in
>consecutive directory slots preceeding the base 8,3 filename.  Thus,
any
>file name longer than 8,3 in length in a FAT16 filesystem uses at
least two
>directory slots, and most likely, it uses more.  Given the 512 slot
>restriction of the FAT16 filesystem, it is only possible to put, at
most,
>255 file names in the root directory of a FAT16 filesystem, assuming
those
>file names fit in just two directory slots each.  I realize the
>mathematically astute will note that half of 512 is 256, but I forgot
to
>mention that one of the 512 slots is taken up with the FAT16 volume
label,
>leaving only 511 slots available for actual use.
>         The bookport typically has three files associated with each
"book" on
>its flash card.  The ._IX file contains the navigational data
necessary to
>move around the book, the ._DD file contains the actual data contained
in
>the book, and the ._AA file contains a place holder which is updated,
or
>created, as the case may be, when ever the user accesses the
associated
>book.
>         Given this information, we now have, a root directory which
can
>contain, at most, 255 file names.  If we divide 255 by 3, we get 85,
which
>is the maximum number of books you could possibly fit in the root
directory
>of a CF card, assuming the file names were long enough to qualify as
long
>names, and short enough not to consume more than 2 directory entries
each.
>If you only load MP3 files onto your Bookport, and you don't do it
through
>the transfer utility, you could, in theory get 127 items onto your
root
>directory, because while you wouldn't have an ._IX file, you would
still
>have a ._AA file associated with each item, and 255/2 is 127.
>
>         The bug in Bookport, I believe, is that it doesn't handle a
full root
>directory condition in a manner which could be considered graceful
under
>any circumstance.  Since the bookport creates its place holder files
when
>ever the user accesses a file on its CF card in the same directory
where
>the file resides, it is possible, and probable, that the root
directory
>could fill in the middle of a place holder creation process.  Since
the
>Bookport doesn't check to see if it has enough space to create a new
file
>before it starts the creation process, it could run out of space at a
>number of points in the creation process.  Worse, it could leave the
>directory in a state which is perfectly readable by your Windows
machine,
>but which the Bookport itself can't properly understand.
>
>         I believe Windows itself will properly notify users when a
FAT16 root
>directory is full, meaning the Transfer Utility will properly report a
disk
>full condition before scribbling needlessly in the root directory.
Thus,
>no change needs to be made there.
>
>         Bookport, on the other hand, should fail more gracefully when
this
>happens.  What I would like to suggest, and folks are free to debate
this,
>is that if a user accesses a file in the root directory for which no
._AA
>file exists, and a new ._AA file cannot be created because it would
>overflow the root directory, Bookport should say something like:
>"Unable to create book marker, too many files in root directory."
>         In addition, I think Bookport should, for the root directory
of CF
>cards, issue a warning that the root directory is getting full when
the
>total number of directory slots in use is 90% or greater.
>         I do not know if the bookport transfer utility can provide
the same
>warning, I suspect it cannot, because it doesn't access the CF card at
that
>level in the OS, but it could certainly be modified to provide
similar
>functionality through examination of the root directory's contents.
>
>         I consider this bug a fairly serious one, because it
manifests itself
>in so many different ways, and because it requires a trip back to the
>bookport transfer utility and the host computer to fix it, once it is
>encountered.  Bookport should not corrupt the filesystem it uses to
store
>its book markers, and any bug which causes this to happen, is, in my
view,
>serious.
>
>         I do not know if this bug is triggered all of the time when
the root
>directory fills up, but I suspect Bookport becomes pretty darned flaky
when
>this happens.
>
>         I hope this description sheds more light on the issue, and,
if I'm
>completely off base, please, someone tell me. :)
>-Brian


Other related posts: