Harald Barth wrote:
It is supposed to be the case that when a file becomes unreferenced (goes "inactive" in bsd parlance) that dirty data is thrown away on the grounds that it can only still be around due to a write error.We really should not invalidate the data any sooner than that, since existing mmaps/etc may be referring to it.I think a write error should trigger the same invalidation as a callback because that means that the data is not in sync with the dataon the server any more. Even if a file is open and referenced, a callback can arrive and invalidate. (insert disclaimer here :)Harald.
The receipt of a callback does not invalidate the data. The receipt of a callback simply means that some state change occurred on the file server and the client must request an updated status. The data is only invalid if after obtaining the revised status the client recognizes that the data version in the cache is no longer consistent with the data version on the file server. A write error might be caused by a failure in the communication path between the client and the file server. Such a failure should not result in the data being discarded from the cache. However, the cache manager must ensure that the dirty pages will be written back to the file server at a later point in time when the file server is once again accessible. Jeffrey Altman
smime.p7s
Description: S/MIME Cryptographic Signature
