Re: [Yaffs] Weird RandomAccessFile behavior on Android

Top Page
Attachments:
Message as email
+ (text/plain)
+ (text/html)
Delete this message
Reply to this message
Author: Bob Lee
Date:  
To: Charles Manning
CC: yaffs
Subject: Re: [Yaffs] Weird RandomAccessFile behavior on Android
Thanks, Charles!

So, if we run out of available space, I'll get an error when I try to write
to the hole? That should be OK... Very neat.

I think I know what my real problem is. I write the expected file size to
the file header. This enables me to recover from a failed queue expansion:
https://github.com/square/retrofit/blob/master/modules/android/src/retrofit/io/QueueFile.java

In the case I'm investigating, the header says 16k, but the file size is
only 4k.

I used "rwd" mode which syncs data by not metadata writes. In other words,
it uses fdatasync() instead of fsync(). I think the file size qualifies as
metadata. It sounds like my header write synced to storage but the file size
metadata didn't, even though it was written first.

If I turn on metadata syncing, ftruncate() should sync, and everything
should be OK.

Sound plausible?

Thanks,
Bob