mirror of
https://github.com/torvalds/linux.git
synced 2025-11-07 03:59:22 +02:00
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. CC: Stable <stable@kernel.org> Signed-off-by: Boaz Harrosh <bharrosh@panasas.com> |
||
|---|---|---|
| .. | ||
| BUGS | ||
| common.h | ||
| dir.c | ||
| exofs.h | ||
| file.c | ||
| inode.c | ||
| ios.c | ||
| Kbuild | ||
| Kconfig | ||
| namei.c | ||
| pnfs.h | ||
| super.c | ||
| symlink.c | ||