Hi Daniel, Thanks for looking at this.
On 09/04/2019 12:28, Daniel Fuchs wrote: > Hi Andrew, > > On 09/04/2019 11:42, Andrew Dinn wrote: >> One detail that is worth highlighting is that for file-backed buffers >> the start address passed to the native method force0 is rounded down to >> a page boundary. This is needed for Unix implementations to ensure that >> the underlying msync system call does not throw an exception. > > Maybe this should be highlighted in the API documentation too, > possibly as a non-normative implementation detail - stating > that an implementation is free to do this (e.g. in an > @implNote). > > My reading of your current proposed specification is that > `from` is > 234 * The offset to the first byte in the buffer region that > 235 * is to be written back to storage > > and well - if I'm not mistaken then it appears the implementation > can write some bytes before `from`, and that would be observable > if you compared the file before and after calling force, isn't it? There is no implication in the current documentation that a call to force will /only/ write back bytes in the affected region. However, I agree that it should be stated explicitly that this may happen. I am not sure that this needs to be mentioned in an implNote. It is of the nature of most memory-mapped storage devices that writeback has a minimum granularity well above byte level. Would you be ok with a correspondingly general caveat? For example, what if I changed the second paragraph in the commment to: * <p> If the file mapped into this buffer resides on a local * storage device then when this method returns it is guaranteed * that all changes made to the selected region of the buffer since * it was created, or since this method was last invoked, will have * been written to that device. The force operation is free to * write bytes that lie outside the specified region, for example * to ensure that data blocks of some device-specific granularity * are transferred in their entirety. * regards, Andrew Dinn ----------- Senior Principal Software Engineer Red Hat UK Ltd Registered in England and Wales under Company Registration No. 03798903 Directors: Michael Cunningham, Michael ("Mike") O'Neill, Eric Shander