linux-uconsole/fs/exofs
Boaz Harrosh 24488113f0 exofs: simple_write_end does not mark_inode_dirty
commit efd124b999 upstream.

exofs uses simple_write_end() for it's .write_end handler. But
it is not enough because simple_write_end() does not call
mark_inode_dirty() when it extends i_size. So even if we do
call mark_inode_dirty at beginning of write out, with a very
long IO and a saturated system we might get the .write_inode()
called while still extend-writing to file and miss out on the last
i_size updates.

So override .write_end, call simple_write_end(), and afterwords if
i_size was changed call mark_inode_dirty().

It stands to logic that since simple_write_end() was the one extending
i_size it should also call mark_inode_dirty(). But it looks like all
users of simple_write_end() are memory-bound pseudo filesystems, who
could careless about mark_inode_dirty(). I might submit a
warning-comment patch to simple_write_end() in future.

Signed-off-by: Boaz Harrosh <bharrosh@panasas.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2010-01-18 10:19:15 -08:00
..
BUGS exofs: Documentation 2009-03-31 19:44:38 +03:00
common.h exofs: Remove IBM copyrights 2009-06-21 17:53:47 +03:00
dir.c exofs: Remove IBM copyrights 2009-06-21 17:53:47 +03:00
exofs.h exofs: Avoid using file_fsync() 2009-06-21 17:53:47 +03:00
file.c exofs: Avoid using file_fsync() 2009-06-21 17:53:47 +03:00
inode.c exofs: simple_write_end does not mark_inode_dirty 2010-01-18 10:19:15 -08:00
Kbuild exofs: super_operations and file_system_type 2009-03-31 19:44:34 +03:00
Kconfig exofs: Kbuild, Headers and osd utils 2009-03-31 19:44:20 +03:00
namei.c exofs: Remove IBM copyrights 2009-06-21 17:53:47 +03:00
osd.c exofs: Remove IBM copyrights 2009-06-21 17:53:47 +03:00
super.c exofs: remove BKL from super operations 2009-09-24 07:47:38 -04:00
symlink.c exofs: Remove IBM copyrights 2009-06-21 17:53:47 +03:00