@@ -3164,12 +3164,17 @@ void fuse_init_file_inode(struct inode *inode, unsigned int flags)
{
struct fuse_inode *fi = get_fuse_inode(inode);
struct fuse_conn *fc = get_fuse_conn(inode);
+ unsigned int max_pages, max_order;
inode->i_fop = &fuse_file_operations;
inode->i_data.a_ops = &fuse_file_aops;
if (fc->writeback_cache)
mapping_set_writeback_may_block(&inode->i_data);
+ max_pages = min(fc->max_write >> PAGE_SHIFT, fc->max_pages);
+ max_order = ilog2(max_pages);
+ mapping_set_folio_order_range(inode->i_mapping, 0, max_order);
+
INIT_LIST_HEAD(&fi->write_files);
INIT_LIST_HEAD(&fi->queued_writes);
fi->writectr = 0;