os/bluestore/BlueFS: do not dirty file when overwriting bytes
The rocksdb log recycle option allows us to overwrite previously
allocated space in an old log file to avoid updating the file
metadata on normal file systems. Take advantage of that here to
by implementing what is effectively O_NOCMTIME semantics: we do
not dirty the file metadata just because mtime is updated.
Instead, we dirty the file only if we allocate new space or if
the size has to be increased.
Note that on my NVME drive a single-thread rados bench test, we
jump from 30MB/sec to 50MB/sec 128KB writes as soon as we start
recycling previous logs (about 40 second into the run).