On Jun 28, 2007, at 5:30 AM, Tomeu Vizoso wrote: > Perhaps we'll need to do the same as is done everywhere and notify > when > a device that needs to be safely unmounted is mounted, and > "complain" to > the user when the stick is removed unsafely.
Normally, complaining is all you can do because the OS provides unmediated access to the underlying FS on the USB stick. But hey, we're not doing that; we're talking to the datastore on the device first. So you have an elegant way of avoiding this whole problem. When you're about to write a file to the USB device, here's what you do: 1. Start transaction in USB stick datastore. 2. Add a row to the pending_writes table in USB stick datatore specifying file name, size, and path of file to be written. 3. End transaction. 4. Copy file to USB stick. 5. Sync. 6. Begin transaction in USB stick datastore. 7. Remove row from pending_writes table. 8. Add row to normal file table. 9. End transaction. Now, every time when mounting an USB stick, for every row in the pending_writes table of the stick's datastore: 1. Does file size on stick match size in pending_writes table? If so, go to step 6 above. If not, proceed with next step. 2. Unlink file from stick. 3. Begin transaction in stick datastore. 4. Remove row from pending_writes table. 5. End transaction. That's it. I had this implemented and working perfectly in Yellow, and I was using MD5 instead of file size as the validity check. It didn't slow things down because having to even check it is a corner case already. Cheers, -- Ivan Krstić <[EMAIL PROTECTED]> | GPG: 0x147C722D _______________________________________________ Devel mailing list Devel@lists.laptop.org http://lists.laptop.org/listinfo/devel