Unverified Commit ce46ae0c authored by Konstantin Komarov's avatar Konstantin Komarov
Browse files

fs/ntfs3: Keep prealloc for all types of files



Before we haven't kept prealloc for sparse files because we thought that
it will speed up create / write operations.
It lead to situation, when user reserved some space for sparse file,
filled volume, and wasn't able to write in reserved file.
With this commit we keep prealloc.
Now xfstest generic/274 pass.
Fixes: be71b5cb ("fs/ntfs3: Add attrib operations")

Signed-off-by: default avatarKonstantin Komarov <almaz.alexandrovich@paragon-software.com>
parent 95dd8b2c
Loading
Loading
Loading
Loading
+1 −7
Original line number Diff line number Diff line
@@ -447,11 +447,8 @@ int attr_set_size(struct ntfs_inode *ni, enum ATTR_TYPE type,
again_1:
	align = sbi->cluster_size;

	if (is_ext) {
	if (is_ext)
		align <<= attr_b->nres.c_unit;
		if (is_attr_sparsed(attr_b))
			keep_prealloc = false;
	}

	old_valid = le64_to_cpu(attr_b->nres.valid_size);
	old_size = le64_to_cpu(attr_b->nres.data_size);
@@ -461,9 +458,6 @@ int attr_set_size(struct ntfs_inode *ni, enum ATTR_TYPE type,
	new_alloc = (new_size + align - 1) & ~(u64)(align - 1);
	new_alen = new_alloc >> cluster_bits;

	if (keep_prealloc && is_ext)
		keep_prealloc = false;

	if (keep_prealloc && new_size < old_size) {
		attr_b->nres.data_size = cpu_to_le64(new_size);
		mi_b->dirty = true;