@@ -2061,7 +2061,6 @@ static struct fuse_writepage_args *fuse_writepage_args_setup(struct folio *folio
2061
2061
struct fuse_fill_wb_data {
2062
2062
struct fuse_writepage_args * wpa ;
2063
2063
struct fuse_file * ff ;
2064
- struct inode * inode ;
2065
2064
unsigned int max_folios ;
2066
2065
/*
2067
2066
* nr_bytes won't overflow since fuse_writepage_need_send() caps
@@ -2071,16 +2070,16 @@ struct fuse_fill_wb_data {
2071
2070
unsigned int nr_bytes ;
2072
2071
};
2073
2072
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 )
2075
2075
{
2076
2076
struct fuse_args_pages * ap = & data -> wpa -> ia .ap ;
2077
- struct fuse_conn * fc = get_fuse_conn (data -> inode );
2078
2077
struct folio * * folios ;
2079
2078
struct fuse_folio_desc * descs ;
2080
2079
unsigned int nfolios = min_t (unsigned int ,
2081
2080
max_t (unsigned int , data -> max_folios * 2 ,
2082
2081
FUSE_DEFAULT_MAX_PAGES_PER_REQ ),
2083
- fc -> max_pages );
2082
+ max_pages );
2084
2083
WARN_ON (nfolios <= data -> max_folios );
2085
2084
2086
2085
folios = fuse_folios_alloc (nfolios , GFP_NOFS , & descs );
@@ -2097,10 +2096,10 @@ static bool fuse_pages_realloc(struct fuse_fill_wb_data *data)
2097
2096
return true;
2098
2097
}
2099
2098
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 )
2101
2101
{
2102
2102
struct fuse_writepage_args * wpa = data -> wpa ;
2103
- struct inode * inode = data -> inode ;
2104
2103
struct fuse_inode * fi = get_fuse_inode (inode );
2105
2104
2106
2105
spin_lock (& fi -> lock );
@@ -2136,7 +2135,8 @@ static bool fuse_writepage_need_send(struct fuse_conn *fc, loff_t pos,
2136
2135
return true;
2137
2136
2138
2137
/* 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 ))
2140
2140
return true;
2141
2141
2142
2142
return false;
@@ -2149,7 +2149,7 @@ static ssize_t fuse_iomap_writeback_range(struct iomap_writepage_ctx *wpc,
2149
2149
struct fuse_fill_wb_data * data = wpc -> wb_ctx ;
2150
2150
struct fuse_writepage_args * wpa = data -> wpa ;
2151
2151
struct fuse_args_pages * ap = & wpa -> ia .ap ;
2152
- struct inode * inode = data -> inode ;
2152
+ struct inode * inode = wpc -> inode ;
2153
2153
struct fuse_inode * fi = get_fuse_inode (inode );
2154
2154
struct fuse_conn * fc = get_fuse_conn (inode );
2155
2155
loff_t offset = offset_in_folio (folio , pos );
@@ -2165,7 +2165,7 @@ static ssize_t fuse_iomap_writeback_range(struct iomap_writepage_ctx *wpc,
2165
2165
}
2166
2166
2167
2167
if (wpa && fuse_writepage_need_send (fc , pos , len , ap , data )) {
2168
- fuse_writepages_send (data );
2168
+ fuse_writepages_send (inode , data );
2169
2169
data -> wpa = NULL ;
2170
2170
data -> nr_bytes = 0 ;
2171
2171
}
@@ -2200,7 +2200,7 @@ static int fuse_iomap_writeback_submit(struct iomap_writepage_ctx *wpc,
2200
2200
2201
2201
if (data -> wpa ) {
2202
2202
WARN_ON (!data -> wpa -> ia .ap .num_folios );
2203
- fuse_writepages_send (data );
2203
+ fuse_writepages_send (wpc -> inode , data );
2204
2204
}
2205
2205
2206
2206
if (data -> ff )
@@ -2219,9 +2219,7 @@ static int fuse_writepages(struct address_space *mapping,
2219
2219
{
2220
2220
struct inode * inode = mapping -> host ;
2221
2221
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 = {};
2225
2223
struct iomap_writepage_ctx wpc = {
2226
2224
.inode = inode ,
2227
2225
.iomap .type = IOMAP_MAPPED ,
@@ -2243,9 +2241,7 @@ static int fuse_writepages(struct address_space *mapping,
2243
2241
static int fuse_launder_folio (struct folio * folio )
2244
2242
{
2245
2243
int err = 0 ;
2246
- struct fuse_fill_wb_data data = {
2247
- .inode = folio -> mapping -> host ,
2248
- };
2244
+ struct fuse_fill_wb_data data = {};
2249
2245
struct iomap_writepage_ctx wpc = {
2250
2246
.inode = folio -> mapping -> host ,
2251
2247
.iomap .type = IOMAP_MAPPED ,
0 commit comments