On Wed, Jun 05, 2013 at 07:33:31PM -0700, ravim wrote:
> Our application writes a data packet  to SD-Card as soon as it receive on
> EXP board. The packet size is 40Bytes and may increase more. The binary data
> is stored in files on SD card which we later run through our interpreter.
> Now if someone pulls the SD-Card in midst of write operation what will
> happen?
> 
> I wanted to ask -  is it possible that portion of data packet may be written
> to file when SD card is suddenly pulled out? Because if this happens the
> whole series of binary data will not make any sense or may give us totally
> wrong information.
> 
> If this happens how do we handle it? Is there a way to make this write
> operation atomic??

If you mean that you're writing a sequence sectors to an SD-card, you
could ensure that your sectors contain a checksum. If the write fails,
the checksum will (with high probability) not match, and you can ignore
the sector.

This assumes that a write failure affects only the sector to which
you're writing. A sensible flash translation layer would hopefully
provide this guarantee.

If you're writing to a file on a VFAT filesystem, it's different. You
might be able to implement a transaction system by making use of the
redundant FAT copies and doing shadow-paging with unused clusters. This
would only guarantee consistency when reading from your own application
though.

Cheers,
Daniel

-- 
Daniel Beer <dlb...@gmail.com>    www.dlbeer.co.nz
IRC: inittab (Freenode)    PGP key: 2048D/160A553B

------------------------------------------------------------------------------
How ServiceNow helps IT people transform IT departments:
1. A cloud service to automate IT design, transition and operations
2. Dashboards that offer high-level views of enterprise services
3. A single system of record for all IT processes
http://p.sf.net/sfu/servicenow-d2d-j
_______________________________________________
Mspgcc-users mailing list
Mspgcc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mspgcc-users

Reply via email to