mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2025-01-06 05:06:29 +00:00
ceph: avoid updating directory inode's i_size accidentally
Directory inode's i_size is used by readdir cache. Signed-off-by: Yan, Zheng <zyan@redhat.com>
This commit is contained in:
parent
af5e5eb574
commit
a3d714c336
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user