On 2017-11-16 08:03, Christian Brabandt wrote:
> On the other hand, we can not fsync() at the end of the `:g`
> command, because at that time, we would not have a filehandle to
> fsync().

I suppose one could gather the file-handles used during the :g
command and then issue one fsync() for each of them when finished.

Pseudocode something like

  filehandle_set = set()

  def begin_global_command():
    filehandle_set.clear()
    

  def deferrable_fsync(fp):
    if in_a_global_command():
      filehandle_set.add(fp)
    else:
      fsync(fp)

  def end_global_command():
    for fp in filehandle_set:
      fsync(fp)
    filehandle_set.clear()

> I suppose skipping the fsync() would be okay in this edge case
> for :g command and trust, that the kernel will write the changes to
> disk. The only problem would be a system crash or power failure but
> I believe this is relatively unlikely.

Alternatively, it might just be enough to document that ":w" also
does an fsync() and might be slow, while writefile() doesn't issue
fsync() and could be faster. For me it was as much the surprise as
anything else.

-tim



-- 
-- 
You received this message from the "vim_use" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_use" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to