]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph-client.git/commitdiff
ceph: put folios not suitable for writeback
authorHristo Venev <hristo@venev.name>
Mon, 4 May 2026 15:54:45 +0000 (18:54 +0300)
committerIlya Dryomov <idryomov@gmail.com>
Mon, 11 May 2026 08:39:22 +0000 (10:39 +0200)
The batch holds references to the folios (see `filemap_get_folios`,
`folio_batch_release`), so we need to `folio_put` the folios we remove.

Tested on v6.18.

Cc: stable@vger.kernel.org
Link: https://tracker.ceph.com/issues/74156
Signed-off-by: Hristo Venev <hristo@venev.name>
Reviewed-by: Viacheslav Dubeyko <Slava.Dubeyko@ibm.com>
Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
fs/ceph/addr.c

index 1454760332ffcee67788ef5af88d274d938f9339..0a86f672cc09ce63d35416d32db56c734854dfb5 100644 (file)
@@ -1336,6 +1336,7 @@ void ceph_process_folio_batch(struct address_space *mapping,
                                                  ceph_wbc, folio);
                if (rc == -ENODATA) {
                        folio_unlock(folio);
+                       folio_put(folio);
                        ceph_wbc->fbatch.folios[i] = NULL;
                        continue;
                } else if (rc == -E2BIG) {
@@ -1346,6 +1347,7 @@ void ceph_process_folio_batch(struct address_space *mapping,
                if (!folio_clear_dirty_for_io(folio)) {
                        doutc(cl, "%p !folio_clear_dirty_for_io\n", folio);
                        folio_unlock(folio);
+                       folio_put(folio);
                        ceph_wbc->fbatch.folios[i] = NULL;
                        continue;
                }