Skip to content

Commit 6e2f4d8

Browse files
joannekoongbrauner
authored andcommitted
fuse: refactor writeback to use iomap_writepage_ctx inode
struct iomap_writepage_ctx includes a pointer to the file inode. In writeback, use that instead of also passing the inode into fuse_fill_wb_data. No functional changes. Signed-off-by: Joanne Koong <[email protected]> Link: https://lore.kernel.org/[email protected] Reviewed-by: Darrick J. Wong <[email protected]> Signed-off-by: Christian Brauner <[email protected]>
1 parent 707c5d3 commit 6e2f4d8

File tree

1 file changed

+12
-16
lines changed

1 file changed

+12
-16
lines changed

fs/fuse/file.c

Lines changed: 12 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -2061,7 +2061,6 @@ static struct fuse_writepage_args *fuse_writepage_args_setup(struct folio *folio
20612061
struct 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,
22432241
static 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

Comments
 (0)