file.c (7b7fd0ac7dc1ffcaf24d9bca0f051b0168e43cd4) file.c (550ef40fa6366d5d11b122e5f36b1f9aa20c087e)
1// SPDX-License-Identifier: GPL-2.0
2/*
3 *
4 * Copyright (C) 2019-2021 Paragon Software GmbH, All rights reserved.
5 *
6 * Regular file handling primitives for NTFS-based filesystems.
7 *
8 */

--- 1159 unchanged lines hidden (view full) ---

1168{
1169 struct ntfs_inode *ni = ntfs_i(inode);
1170 struct ntfs_sb_info *sbi = ni->mi.sbi;
1171 int err = 0;
1172
1173 /* If we are last writer on the inode, drop the block reservation. */
1174 if (sbi->options->prealloc &&
1175 ((file->f_mode & FMODE_WRITE) &&
1// SPDX-License-Identifier: GPL-2.0
2/*
3 *
4 * Copyright (C) 2019-2021 Paragon Software GmbH, All rights reserved.
5 *
6 * Regular file handling primitives for NTFS-based filesystems.
7 *
8 */

--- 1159 unchanged lines hidden (view full) ---

1168{
1169 struct ntfs_inode *ni = ntfs_i(inode);
1170 struct ntfs_sb_info *sbi = ni->mi.sbi;
1171 int err = 0;
1172
1173 /* If we are last writer on the inode, drop the block reservation. */
1174 if (sbi->options->prealloc &&
1175 ((file->f_mode & FMODE_WRITE) &&
1176 atomic_read(&inode->i_writecount) == 1)) {
1176 atomic_read(&inode->i_writecount) == 1)
1177 /*
1178 * The only file when inode->i_fop = &ntfs_file_operations and
1179 * init_rwsem(&ni->file.run_lock) is not called explicitly is MFT.
1180 *
1181 * Add additional check here.
1182 */
1183 && inode->i_ino != MFT_REC_MFT) {
1177 ni_lock(ni);
1178 down_write(&ni->file.run_lock);
1179
1180 err = attr_set_size(ni, ATTR_DATA, NULL, 0, &ni->file.run,
1181 i_size_read(inode), &ni->i_valid, false,
1182 NULL);
1183
1184 up_write(&ni->file.run_lock);

--- 54 unchanged lines hidden ---
1184 ni_lock(ni);
1185 down_write(&ni->file.run_lock);
1186
1187 err = attr_set_size(ni, ATTR_DATA, NULL, 0, &ni->file.run,
1188 i_size_read(inode), &ni->i_valid, false,
1189 NULL);
1190
1191 up_write(&ni->file.run_lock);

--- 54 unchanged lines hidden ---