linux/fs/afs
David Howells 9d37e1cab2 afs: Fix updating of i_blocks on file/dir extension
When an afs file or directory is modified locally such that the total file
size is extended, i_blocks needs to be recalculated too.

Fix this by making afs_write_end() and afs_edit_dir_add() call
afs_set_i_size() rather than setting inode->i_size directly as that also
recalculates inode->i_blocks.

This can be tested by creating and writing into directories and files and
then examining them with du.  Without this change, directories show a 4
blocks (they start out at 2048 bytes) and files show 0 blocks; with this
change, they should show a number of blocks proportional to the file size
rounded up to 1024.

Fixes: 31143d5d51 ("AFS: implement basic file write support")
Fixes: 63a4681ff3 ("afs: Locally edit directory data for mkdir/create/unlink/...")
Reported-by: Markus Suvanto <markus.suvanto@gmail.com>
Signed-off-by: David Howells <dhowells@redhat.com>
Reviewed-by: Marc Dionne <marc.dionne@auristor.com>
Tested-by: Markus Suvanto <markus.suvanto@gmail.com>
cc: linux-afs@lists.infradead.org
Link: https://lore.kernel.org/r/163113612442.352844.11162345591911691150.stgit@warthog.procyon.org.uk/
2021-09-13 09:14:21 +01:00
..
Kconfig
Makefile
addr_list.c
afs.h
afs_cm.h
afs_fs.h
afs_vl.h
cache.c
callback.c afs: Try to avoid taking RCU read lock when checking vnode validity 2021-09-13 09:10:39 +01:00
cell.c afs: Fix mmap coherency vs 3rd-party changes 2021-09-13 09:10:39 +01:00
cmservice.c afs: Fix tracepoint string placement with built-in AFS 2021-07-21 15:08:35 +01:00
dir.c afs: Fix incorrect triggering of sillyrename on 3rd-party invalidation 2021-09-13 09:10:39 +01:00
dir_edit.c afs: Fix updating of i_blocks on file/dir extension 2021-09-13 09:14:21 +01:00
dir_silly.c afs: Fix speculative status fetches 2021-05-01 11:55:36 -07:00
dynroot.c
file.c afs: Fix mmap coherency vs 3rd-party changes 2021-09-13 09:10:39 +01:00
flock.c fs: remove mandatory file locking support 2021-08-23 06:15:36 -04:00
fs_operation.c afs: Fix speculative status fetches 2021-05-01 11:55:36 -07:00
fs_probe.c afs: Fix corruption in reads at fpos 2G-4G from an OpenAFS server 2021-09-13 09:14:21 +01:00
fsclient.c afs: Fix corruption in reads at fpos 2G-4G from an OpenAFS server 2021-09-13 09:14:21 +01:00
inode.c afs: Fix updating of i_blocks on file/dir extension 2021-09-13 09:14:21 +01:00
internal.h afs: Fix updating of i_blocks on file/dir extension 2021-09-13 09:14:21 +01:00
main.c afs: Fix an IS_ERR() vs NULL check 2021-06-15 07:42:26 -07:00
misc.c
mntpt.c
proc.c
protocol_afs.h afs: Fix corruption in reads at fpos 2G-4G from an OpenAFS server 2021-09-13 09:14:21 +01:00
protocol_uae.h
protocol_yfs.h afs: Fix corruption in reads at fpos 2G-4G from an OpenAFS server 2021-09-13 09:14:21 +01:00
rotate.c afs: Try to avoid taking RCU read lock when checking vnode validity 2021-09-13 09:10:39 +01:00
rxrpc.c
security.c
server.c afs: Fix mmap coherency vs 3rd-party changes 2021-09-13 09:10:39 +01:00
server_list.c
super.c afs: Fix mmap coherency vs 3rd-party changes 2021-09-13 09:10:39 +01:00
vl_alias.c
vl_list.c
vl_probe.c
vl_rotate.c
vlclient.c afs: Fix fall-through warnings for Clang 2021-05-25 07:30:34 -10:00
volume.c
write.c afs: Fix updating of i_blocks on file/dir extension 2021-09-13 09:14:21 +01:00
xattr.c
xdr_fs.h
yfsclient.c