@@ -491,7 +491,7 @@ static void begin_folio_read(struct btrfs_fs_info *fs_info, struct folio *folio)
if (!btrfs_is_subpage(fs_info, folio->mapping))
return;
- ASSERT(folio_test_private(folio));
+ ASSERT(mapping_release_always(folio->mapping));
btrfs_folio_set_lock(fs_info, folio, folio_pos(folio), PAGE_SIZE);
}
@@ -832,7 +832,7 @@ static int prepare_uptodate_folio(struct inode *inode, struct folio *folio, u64
* The private flag check is essential for subpage as we need to store
* extra bitmap using folio private.
*/
- if (folio->mapping != inode->i_mapping || !folio_test_private(folio)) {
+ if (folio->mapping != inode->i_mapping || !mapping_release_always(folio->mapping)) {
folio_unlock(folio);
return -EAGAIN;
}
@@ -5602,6 +5602,8 @@ static int btrfs_init_locked_inode(struct inode *inode, void *p)
btrfs_set_inode_number(BTRFS_I(inode), args->ino);
BTRFS_I(inode)->root = btrfs_grab_root(args->root);
+ mapping_set_release_always(inode->i_mapping);
+
if (args->root && args->root == args->root->fs_info->tree_root &&
args->ino != BTRFS_BTREE_INODE_OBJECTID)
set_bit(BTRFS_INODE_FREE_SPACE_INODE,
@@ -6673,6 +6675,7 @@ static int btrfs_create(struct mnt_idmap *idmap, struct inode *dir,
inode->i_fop = &btrfs_file_operations;
inode->i_op = &btrfs_file_inode_operations;
inode->i_mapping->a_ops = &btrfs_aops;
+ mapping_set_release_always(inode->i_mapping);
return btrfs_create_common(dir, dentry, inode);
}