John-Mark Gurney
2012-09-19 09:04:37 UTC
I was looking at geli and I'm not sure if it's implementing BIO_FLUSH
and/or BIO_ORDERED properly...
that data is on disk, i.e. _ORDERED is set on a BIO_FLUSH...
BIO_ORDERED is handled by diskq_* code such that when you add an _ORDERED
command, all commands are put after it, but there doesn't appear to
be any code to ensure that an _ORDERED command waits for prevoius
pending commands to complete..
This is extra obvious in eli in that a _FLUSH is immediately dispatched,
even when there may be _WRITEs that haven't been finished encrypting and
sent down to the disk to get _FLUSHed...
Any comments about this?
Thanks.
and/or BIO_ORDERED properly...
From my understanding is the BIO_ORDERED is suppose to wait for the
previous _WRITES to complete before returning so that you can ensurethat data is on disk, i.e. _ORDERED is set on a BIO_FLUSH...
BIO_ORDERED is handled by diskq_* code such that when you add an _ORDERED
command, all commands are put after it, but there doesn't appear to
be any code to ensure that an _ORDERED command waits for prevoius
pending commands to complete..
This is extra obvious in eli in that a _FLUSH is immediately dispatched,
even when there may be _WRITEs that haven't been finished encrypting and
sent down to the disk to get _FLUSHed...
Any comments about this?
Thanks.
--
John-Mark Gurney Voice: +1 415 225 5579
"All that I will do, has been done, All that I have, has not."
John-Mark Gurney Voice: +1 415 225 5579
"All that I will do, has been done, All that I have, has not."