Failed writes to block devices don't report an error
Arnout Vandecappelle
arnout at mind.be
Wed Jun 23 16:08:57 UTC 2010
On Wednesday 23 June 2010 03:18:02, Chris Johns wrote:
> I see us needing both of these. Further the 'write' has:
>
> "[SIO] If the O_DSYNC bit has been set, write I/O operations
> on the file descriptor shall complete as defined by synchronized
> I/O data integrity completion."
>
> This is an extension. I cannot find any further detail about the SIO
> extensions but to me it makes sense that we look at a standards base way
> of managing this. We have an AIO effort underway so we should consider
> the O_DSYNC flag.
Agreed, but that's a lot more effort as it requires support all over the
filesystem.
[snip]
> > 1. Make sure rtems_bdbuf_sync() returns an error if the write fails.
> > rtems_bdbuf_sync() is called when disks or files are sync'ed. It
> > writes back a block and waits for the writeback to finish. Currently,
> > it always returns successfully but we could put error detection code
> > in here.
>
> This would be good to have. I see it being needed which ever way we go.
> I also see the following:
>
> if (write(fd, buf, size) != size)
> goto handle_error
> if (sync_call(..) < 0)
> goto handle_error
>
> in an application could be a work around until a more standard approach
> is made. I prefer this over the other suggestions.
...which is why I put it as the first one :-)
[snip]
>
> > 4. In the block device driver itself (spi-sd-card.c in my case), detect
> > that the media is removed and take appropriate action. I'm not
> > entirely sure, though, what 'appropriate action' would be.
>
> I know Sebastian has something like this for USB devices. Maybe he can
> help here.
As I feared, "appropriate action" turns out to be quite complex. And
detecting that the SD card has disappeared isn't trivial if the card detect
pin isn't connected...
Regards,
Arnout
--
Arnout Vandecappelle arnout at mind be
Senior Embedded Software Architect +32-16-286540
Essensium/Mind http://www.mind.be
G.Geenslaan 9, 3001 Leuven, Belgium BE 872 984 063 RPR Leuven
LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle
GPG fingerprint: 31BB CF53 8660 6F88 345D 54CC A836 5879 20D7 CF43
More information about the users
mailing list