linux/fs/udf
Jan Kara 2c948b3f86 udf: Avoid IO in udf_clear_inode
It is not very good to do IO in udf_clear_inode. First, VFS does not really
expect inode to become dirty there and thus we have to write it ourselves,
second, memory reclaim gets blocked waiting for IO when it does not really
expect it, third, the IO pattern (e.g. on umount) resulting from writes in
udf_clear_inode is bad and it slows down writing a lot.

The reason why UDF needed to do IO in udf_clear_inode is that UDF standard
mandates extent length to exactly match inode size. But when we allocate
extents to a file or directory, we don't really know what exactly the final
file size will be and thus temporarily set it to block boundary and later
truncate it to exact length in udf_clear_inode. Now, this is changed to
truncate to final file size in udf_release_file for regular files. For
directories and symlinks, we do the truncation at the moment when learn
what the final file size will be.

Signed-off-by: Jan Kara <jack@suse.cz>
2009-12-14 21:40:04 +01:00
..
balloc.c udf: Fix compilation with UDFFS_DEBUG enabled 2009-12-14 21:40:04 +01:00
dir.c switch udf to simple_fsync() 2009-06-11 21:36:13 -04:00
directory.c udf: Remove dead code 2009-09-14 19:13:00 +02:00
ecma_167.h Remove struct typedefs from fs/udf/ecma_167.h et al. 2009-04-02 12:29:47 +02:00
file.c udf: Avoid IO in udf_clear_inode 2009-12-14 21:40:04 +01:00
ialloc.c udf: Don't write integrity descriptor too often 2009-04-02 13:36:28 +02:00
inode.c udf: Avoid IO in udf_clear_inode 2009-12-14 21:40:04 +01:00
Kconfig fs/Kconfig: move iso9660, udf out 2009-01-22 13:15:55 +03:00
lowlevel.c udf: Remove dead code 2009-09-14 19:13:00 +02:00
Makefile switch udf to simple_fsync() 2009-06-11 21:36:13 -04:00
misc.c Fix the udf code not to pass structs on stack where possible. 2009-04-02 12:29:47 +02:00
namei.c udf: Avoid IO in udf_clear_inode 2009-12-14 21:40:04 +01:00
osta_udf.h Remove struct typedefs from fs/udf/ecma_167.h et al. 2009-04-02 12:29:47 +02:00
partition.c Remove struct typedefs from fs/udf/ecma_167.h et al. 2009-04-02 12:29:47 +02:00
super.c udf: Try harder when looking for VAT inode 2009-12-14 21:40:04 +01:00
symlink.c udf: move headers out include/linux/ 2008-04-17 14:22:23 +02:00
truncate.c Fix the udf code not to pass structs on stack where possible. 2009-04-02 12:29:47 +02:00
udf_i.h Remove struct typedefs from fs/udf/ecma_167.h et al. 2009-04-02 12:29:47 +02:00
udf_sb.h udf: Don't write integrity descriptor too often 2009-04-02 13:36:28 +02:00
udfdecl.h switch udf to simple_fsync() 2009-06-11 21:36:13 -04:00
udfend.h Remove struct typedefs from fs/udf/ecma_167.h et al. 2009-04-02 12:29:47 +02:00
udftime.c Remove struct typedefs from fs/udf/ecma_167.h et al. 2009-04-02 12:29:47 +02:00
unicode.c udf: Fix oops when invalid character in filename occurs 2009-04-02 12:29:53 +02:00