diff options
author | Curt Wohlgemuth | 2011-04-11 04:05:31 +0200 |
---|---|---|
committer | Theodore Ts'o | 2011-04-11 04:05:31 +0200 |
commit | 0893ed458b4b1d7c7667ca7ffb8b11febe7e7e6c (patch) | |
tree | a9a4e226a6bfa7a13e0cad545280e5e8ce2a80b2 /fs/binfmt_script.c | |
parent | ext4: init timer earlier to avoid a kernel panic in __save_error_info (diff) | |
download | kernel-qcow2-linux-0893ed458b4b1d7c7667ca7ffb8b11febe7e7e6c.tar.gz kernel-qcow2-linux-0893ed458b4b1d7c7667ca7ffb8b11febe7e7e6c.tar.xz kernel-qcow2-linux-0893ed458b4b1d7c7667ca7ffb8b11febe7e7e6c.zip |
ext4: sync the directory inode in ext4_sync_parent()
ext4 has taken the stance that, in the absence of a journal,
when an fsync/fdatasync of an inode is done, the parent
directory should be sync'ed if this inode entry is new.
ext4_sync_parent(), which implements this, does indeed sync
the dirent pages for parent directories, but it does not
sync the directory *inode*. This patch fixes this.
Also now return error status from ext4_sync_parent().
I tested this using a power fail test, which panics a
machine running a file server getting requests from a
client. Without this patch, on about every other test run,
the server is missing many, many files that had been synced.
With this patch, on > 6 runs, I see zero files being lost.
Google-Bug-Id: 4179519
Signed-off-by: Curt Wohlgemuth <curtw@google.com>
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
Diffstat (limited to 'fs/binfmt_script.c')
0 files changed, 0 insertions, 0 deletions