@@ -2061,7 +2061,6 @@ static struct fuse_writepage_args *fuse_writepage_args_setup(struct folio *folio
20612061struct fuse_fill_wb_data {
20622062 struct fuse_writepage_args * wpa ;
20632063 struct fuse_file * ff ;
2064- struct inode * inode ;
20652064 unsigned int max_folios ;
20662065 /*
20672066 * nr_bytes won't overflow since fuse_writepage_need_send() caps
@@ -2071,16 +2070,16 @@ struct fuse_fill_wb_data {
20712070 unsigned int nr_bytes ;
20722071};
20732072
2074- static bool fuse_pages_realloc (struct fuse_fill_wb_data * data )
2073+ static bool fuse_pages_realloc (struct fuse_fill_wb_data * data ,
2074+ unsigned int max_pages )
20752075{
20762076 struct fuse_args_pages * ap = & data -> wpa -> ia .ap ;
2077- struct fuse_conn * fc = get_fuse_conn (data -> inode );
20782077 struct folio * * folios ;
20792078 struct fuse_folio_desc * descs ;
20802079 unsigned int nfolios = min_t (unsigned int ,
20812080 max_t (unsigned int , data -> max_folios * 2 ,
20822081 FUSE_DEFAULT_MAX_PAGES_PER_REQ ),
2083- fc -> max_pages );
2082+ max_pages );
20842083 WARN_ON (nfolios <= data -> max_folios );
20852084
20862085 folios = fuse_folios_alloc (nfolios , GFP_NOFS , & descs );
@@ -2097,10 +2096,10 @@ static bool fuse_pages_realloc(struct fuse_fill_wb_data *data)
20972096 return true;
20982097}
20992098
2100- static void fuse_writepages_send (struct fuse_fill_wb_data * data )
2099+ static void fuse_writepages_send (struct inode * inode ,
2100+ struct fuse_fill_wb_data * data )
21012101{
21022102 struct fuse_writepage_args * wpa = data -> wpa ;
2103- struct inode * inode = data -> inode ;
21042103 struct fuse_inode * fi = get_fuse_inode (inode );
21052104
21062105 spin_lock (& fi -> lock );
@@ -2136,7 +2135,8 @@ static bool fuse_writepage_need_send(struct fuse_conn *fc, loff_t pos,
21362135 return true;
21372136
21382137 /* Need to grow the pages array? If so, did the expansion fail? */
2139- if (ap -> num_folios == data -> max_folios && !fuse_pages_realloc (data ))
2138+ if (ap -> num_folios == data -> max_folios &&
2139+ !fuse_pages_realloc (data , fc -> max_pages ))
21402140 return true;
21412141
21422142 return false;
@@ -2149,7 +2149,7 @@ static ssize_t fuse_iomap_writeback_range(struct iomap_writepage_ctx *wpc,
21492149 struct fuse_fill_wb_data * data = wpc -> wb_ctx ;
21502150 struct fuse_writepage_args * wpa = data -> wpa ;
21512151 struct fuse_args_pages * ap = & wpa -> ia .ap ;
2152- struct inode * inode = data -> inode ;
2152+ struct inode * inode = wpc -> inode ;
21532153 struct fuse_inode * fi = get_fuse_inode (inode );
21542154 struct fuse_conn * fc = get_fuse_conn (inode );
21552155 loff_t offset = offset_in_folio (folio , pos );
@@ -2165,7 +2165,7 @@ static ssize_t fuse_iomap_writeback_range(struct iomap_writepage_ctx *wpc,
21652165 }
21662166
21672167 if (wpa && fuse_writepage_need_send (fc , pos , len , ap , data )) {
2168- fuse_writepages_send (data );
2168+ fuse_writepages_send (inode , data );
21692169 data -> wpa = NULL ;
21702170 data -> nr_bytes = 0 ;
21712171 }
@@ -2200,7 +2200,7 @@ static int fuse_iomap_writeback_submit(struct iomap_writepage_ctx *wpc,
22002200
22012201 if (data -> wpa ) {
22022202 WARN_ON (!data -> wpa -> ia .ap .num_folios );
2203- fuse_writepages_send (data );
2203+ fuse_writepages_send (wpc -> inode , data );
22042204 }
22052205
22062206 if (data -> ff )
@@ -2219,9 +2219,7 @@ static int fuse_writepages(struct address_space *mapping,
22192219{
22202220 struct inode * inode = mapping -> host ;
22212221 struct fuse_conn * fc = get_fuse_conn (inode );
2222- struct fuse_fill_wb_data data = {
2223- .inode = inode ,
2224- };
2222+ struct fuse_fill_wb_data data = {};
22252223 struct iomap_writepage_ctx wpc = {
22262224 .inode = inode ,
22272225 .iomap .type = IOMAP_MAPPED ,
@@ -2243,9 +2241,7 @@ static int fuse_writepages(struct address_space *mapping,
22432241static int fuse_launder_folio (struct folio * folio )
22442242{
22452243 int err = 0 ;
2246- struct fuse_fill_wb_data data = {
2247- .inode = folio -> mapping -> host ,
2248- };
2244+ struct fuse_fill_wb_data data = {};
22492245 struct iomap_writepage_ctx wpc = {
22502246 .inode = folio -> mapping -> host ,
22512247 .iomap .type = IOMAP_MAPPED ,
0 commit comments