diff --git a/mm/filemap.c b/mm/filemap.c index 657bcd887fdb..a830b22c9708 100644 --- a/mm/filemap.c +++ b/mm/filemap.c @@ -3754,6 +3754,7 @@ static struct folio *do_read_cache_folio(struct address_space *mapping, if (!folio) return ERR_PTR(-ENOMEM); err = filemap_add_folio(mapping, folio, index, gfp); + printk("err: %d, folio: %p, in: %p, read_folio: %p %s\n", err, folio, mapping->host, filter, __func__); if (unlikely(err)) { folio_put(folio); if (err == -EEXIST) @@ -3787,6 +3788,7 @@ static struct folio *do_read_cache_folio(struct address_space *mapping, filler: err = filemap_read_folio(file, filler, folio); + printk("err: %d, folio: %p, folio uptod: %d, %s\n", err, folio, folio_test_uptodate(folio), __func__); if (err) { folio_put(folio); if (err == AOP_TRUNCATED_PAGE) diff --git a/fs/namei.c b/fs/namei.c index 3a4c40e12f78..3f72aa8d604d 100644 --- a/fs/namei.c +++ b/fs/namei.c @@ -5272,6 +5272,8 @@ const char *page_get_link(struct dentry *dentry, struct inode *inode, page = read_mapping_page(mapping, 0, NULL); if (IS_ERR(page)) return (char*)page; + else if (IS_ERR(page_folio(page))) + return (char*)page_folio(page); } set_delayed_call(callback, page_put_link, page); BUG_ON(mapping_gfp_mask(mapping) & __GFP_HIGHMEM); diff --git a/fs/squashfs/file.c b/fs/squashfs/file.c index a8c1e7f9a609..d581cea14316 100644 --- a/fs/squashfs/file.c +++ b/fs/squashfs/file.c @@ -459,6 +459,8 @@ static int squashfs_read_folio(struct file *file, struct folio *folio) TRACE("Entered squashfs_readpage, page index %lx, start block %llx\n", page->index, squashfs_i(inode)->start); + printk("folio: %p, isize: %d, pidx: %d, idx: %d, fe: %d, %s\n", + folio, i_size_read(inode), page->index, index, file_end, __func__); if (page->index >= ((i_size_read(inode) + PAGE_SIZE - 1) >> PAGE_SHIFT)) goto out; @@ -478,6 +480,7 @@ static int squashfs_read_folio(struct file *file, struct folio *folio) } else res = squashfs_readpage_fragment(page, expected); + printk("res: %d, %s\n", res, __func__); if (!res) return 0; @@ -489,6 +492,7 @@ static int squashfs_read_folio(struct file *file, struct folio *folio) if (res == 0) SetPageUptodate(page); unlock_page(page); + printk("out, res: %d, %s\n", res, __func__); return res; } diff --git a/fs/squashfs/symlink.c b/fs/squashfs/symlink.c index 6ef735bd841a..7e41196ea8de 100644 --- a/fs/squashfs/symlink.c +++ b/fs/squashfs/symlink.c @@ -49,6 +49,8 @@ static int squashfs_symlink_read_folio(struct file *file, struct folio *folio) /* * Skip index bytes into symlink metadata. */ + printk("folio: %p, isize: %d, idx: %d, %s\n", + folio, i_size_read(inode), index, __func__); if (index) { bytes = squashfs_read_metadata(sb, NULL, &block, &offset, index); @@ -93,6 +95,7 @@ static int squashfs_symlink_read_folio(struct file *file, struct folio *folio) flush_dcache_folio(folio); error = 0; out: + printk("error: %d, %s\n", error, __func__); folio_end_read(folio, error == 0); return error; }