diff options
| author | Andrey V. Savochkin <saw@saw.sw.com.sg> | 2004-09-16 22:03:20 -0700 |
|---|---|---|
| committer | Linus Torvalds <torvalds@ppc970.osdl.org> | 2004-09-16 22:03:20 -0700 |
| commit | 73441a0edd8030afdc0c455272585fb7f4fbeaa0 (patch) | |
| tree | 238825f4ecc3db36e37b459dd66479a2b46fe18b /Documentation | |
| parent | 0855040e79e53064f73b5c34fb7b1ccd196f9b52 (diff) | |
[PATCH] fix for fsync ignoring writing errors
Currently metadata writing errors are ignored and not returned from
sys_fsync on ext2 and ext3 filesystems. That is, at least ext2 and ext3.
Both ext2 and ext3 resort to sync_inode() in their ->sync_inode method,
which in turn calls ->write_inode. ->write_inode method has void type, and
any IO errors happening inside are lost.
Make ->write_inode return the error code?
Signed-off-by: Andrey Savochkin <saw@saw.sw.com.sg>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'Documentation')
| -rw-r--r-- | Documentation/filesystems/Locking | 2 | ||||
| -rw-r--r-- | Documentation/filesystems/vfs.txt | 2 |
2 files changed, 2 insertions, 2 deletions
diff --git a/Documentation/filesystems/Locking b/Documentation/filesystems/Locking index 1c23acfb6041..f1c2cee131b4 100644 --- a/Documentation/filesystems/Locking +++ b/Documentation/filesystems/Locking @@ -90,7 +90,7 @@ prototypes: void (*destroy_inode)(struct inode *); void (*read_inode) (struct inode *); void (*dirty_inode) (struct inode *); - void (*write_inode) (struct inode *, int); + int (*write_inode) (struct inode *, int); void (*put_inode) (struct inode *); void (*drop_inode) (struct inode *); void (*delete_inode) (struct inode *); diff --git a/Documentation/filesystems/vfs.txt b/Documentation/filesystems/vfs.txt index 9557ea1846d2..5be10c915614 100644 --- a/Documentation/filesystems/vfs.txt +++ b/Documentation/filesystems/vfs.txt @@ -176,7 +176,7 @@ filesystem. As of kernel 2.1.99, the following members are defined: struct super_operations { void (*read_inode) (struct inode *); - void (*write_inode) (struct inode *, int); + int (*write_inode) (struct inode *, int); void (*put_inode) (struct inode *); void (*drop_inode) (struct inode *); void (*delete_inode) (struct inode *); |
