]> asedeno.scripts.mit.edu Git - linux.git/commit
gfs2: Dirty source inode during rename
authorAndreas Gruenbacher <agruenba@redhat.com>
Wed, 28 Feb 2018 19:48:53 +0000 (12:48 -0700)
committerBob Peterson <rpeterso@redhat.com>
Thu, 8 Mar 2018 16:26:20 +0000 (09:26 -0700)
commit83998ccd9bfff881f04ce03f6964f8a83e6c5b54
tree0d7ce75cf2531a013e58d0681daa596c5b36fe32
parent174d1232ebc84fcde8f5889d1171c9c7e74a10a7
gfs2: Dirty source inode during rename

Mark the source inode dirty during a rename instead of just updating the
underlying buffer head.  Otherwise, fsync may find the inode clean and
will then skip flushing the journal.  A subsequent power failure will
cause the rename to be lost.  This happens in command sequences like:

  xfs_io -f -c 'pwrite 0 4096' -c 'fsync' foo
  mv foo bar
  xfs_io -c 'fsync' bar
  # power failure

Fixes xfstests generic/322, generic/376.

Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com>
Signed-off-by: Bob Peterson <rpeterso@redhat.com>
fs/gfs2/dir.c
fs/gfs2/inode.c