Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a3d714c3 authored by Yan, Zheng's avatar Yan, Zheng Committed by Ilya Dryomov
Browse files

ceph: avoid updating directory inode's i_size accidentally



Directory inode's i_size is used by readdir cache.

Signed-off-by: default avatarYan, Zheng <zyan@redhat.com>
parent af5e5eb5
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -549,6 +549,10 @@ int ceph_fill_file_size(struct inode *inode, int issued,
	if (ceph_seq_cmp(truncate_seq, ci->i_truncate_seq) > 0 ||
	    (truncate_seq == ci->i_truncate_seq && size > inode->i_size)) {
		dout("size %lld -> %llu\n", inode->i_size, size);
		if (size > 0 && S_ISDIR(inode->i_mode)) {
			pr_err("fill_file_size non-zero size for directory\n");
			size = 0;
		}
		i_size_write(inode, size);
		inode->i_blocks = (size + (1<<9) - 1) >> 9;
		ci->i_reported_size = size;