fs/ntfs3: fold resident writeback into writepages loop

Remove the separate ntfs_resident_writepage() helper and handle resident
writeback directly from ntfs_writepages(). This simplifies the resident
writeback path and keeps the folio handling local to ntfs_writepages().

Signed-off-by: Konstantin Komarov <almaz.alexandrovich@paragon-software.com>
This commit is contained in:
Konstantin Komarov 2026-05-22 14:55:38 +02:00
parent 5569b3c525
commit 65bd5da999
No known key found for this signature in database
GPG Key ID: A9B0331F832407B6

View File

@ -992,31 +992,6 @@ static const struct iomap_writeback_ops ntfs_writeback_ops = {
.writeback_submit = iomap_ioend_writeback_submit,
};
static int ntfs_resident_writepage(struct folio *folio,
struct writeback_control *wbc)
{
struct address_space *mapping = folio->mapping;
struct inode *inode = mapping->host;
struct ntfs_inode *ni = ntfs_i(inode);
int ret;
/* Avoid any operation if inode is bad. */
if (unlikely(is_bad_ni(ni)))
return -EINVAL;
if (unlikely(ntfs3_forced_shutdown(inode->i_sb)))
return -EIO;
ni_lock(ni);
ret = attr_data_write_resident(ni, folio);
ni_unlock(ni);
if (ret != E_NTFS_NONRESIDENT)
folio_unlock(folio);
mapping_set_error(mapping, ret);
return ret;
}
static int ntfs_writepages(struct address_space *mapping,
struct writeback_control *wbc)
{
@ -1038,9 +1013,22 @@ static int ntfs_writepages(struct address_space *mapping,
if (is_resident(ni)) {
struct folio *folio = NULL;
err = 0;
while ((folio = writeback_iter(mapping, wbc, folio, &err)))
err = ntfs_resident_writepage(folio, wbc);
while ((folio = writeback_iter(mapping, wbc, folio, &err))) {
int err2;
ni_lock(ni);
err2 = attr_data_write_resident(ni, folio);
ni_unlock(ni);
folio_unlock(folio);
if (err2) {
mapping_set_error(mapping, err2);
if (!err)
err = err2;
}
}
return err;
}