Skip to content

Commit 185d349

Browse files
Christoph Hellwigjankara
authored andcommitted
udf: stop using write_cache_pages
Stop using the obsolete write_cache_pages and use writeback_iter directly. Use the chance to refactor the inacb writeback code to not have a separate writeback helper. Signed-off-by: Christoph Hellwig <[email protected]> Signed-off-by: Jan Kara <[email protected]> Link: https://patch.msgid.link/[email protected]
1 parent a099b09 commit 185d349

File tree

1 file changed

+16
-12
lines changed

1 file changed

+16
-12
lines changed

fs/udf/inode.c

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -181,19 +181,23 @@ static void udf_write_failed(struct address_space *mapping, loff_t to)
181181
}
182182
}
183183

184-
static int udf_adinicb_writepage(struct folio *folio,
185-
struct writeback_control *wbc, void *data)
184+
static int udf_adinicb_writepages(struct address_space *mapping,
185+
struct writeback_control *wbc)
186186
{
187-
struct inode *inode = folio->mapping->host;
187+
struct inode *inode = mapping->host;
188188
struct udf_inode_info *iinfo = UDF_I(inode);
189+
struct folio *folio = NULL;
190+
int error = 0;
191+
192+
while ((folio = writeback_iter(mapping, wbc, folio, &error))) {
193+
BUG_ON(!folio_test_locked(folio));
194+
BUG_ON(folio->index != 0);
195+
memcpy_from_file_folio(iinfo->i_data + iinfo->i_lenEAttr, folio,
196+
0, i_size_read(inode));
197+
folio_unlock(folio);
198+
}
189199

190-
BUG_ON(!folio_test_locked(folio));
191-
BUG_ON(folio->index != 0);
192-
memcpy_from_file_folio(iinfo->i_data + iinfo->i_lenEAttr, folio, 0,
193-
i_size_read(inode));
194-
folio_unlock(folio);
195200
mark_inode_dirty(inode);
196-
197201
return 0;
198202
}
199203

@@ -203,9 +207,9 @@ static int udf_writepages(struct address_space *mapping,
203207
struct inode *inode = mapping->host;
204208
struct udf_inode_info *iinfo = UDF_I(inode);
205209

206-
if (iinfo->i_alloc_type != ICBTAG_FLAG_AD_IN_ICB)
207-
return mpage_writepages(mapping, wbc, udf_get_block_wb);
208-
return write_cache_pages(mapping, wbc, udf_adinicb_writepage, NULL);
210+
if (iinfo->i_alloc_type == ICBTAG_FLAG_AD_IN_ICB)
211+
return udf_adinicb_writepages(mapping, wbc);
212+
return mpage_writepages(mapping, wbc, udf_get_block_wb);
209213
}
210214

211215
static void udf_adinicb_read_folio(struct folio *folio)

0 commit comments

Comments
 (0)