mirror of
https://github.com/lkl/linux.git
synced 2025-12-19 08:03:01 +09:00
Merge tag 'folio-6.0' of git://git.infradead.org/users/willy/pagecache
Pull folio updates from Matthew Wilcox: - Fix an accounting bug that made NR_FILE_DIRTY grow without limit when running xfstests - Convert more of mpage to use folios - Remove add_to_page_cache() and add_to_page_cache_locked() - Convert find_get_pages_range() to filemap_get_folios() - Improvements to the read_cache_page() family of functions - Remove a few unnecessary checks of PageError - Some straightforward filesystem conversions to use folios - Split PageMovable users out from address_space_operations into their own movable_operations - Convert aops->migratepage to aops->migrate_folio - Remove nobh support (Christoph Hellwig) * tag 'folio-6.0' of git://git.infradead.org/users/willy/pagecache: (78 commits) fs: remove the NULL get_block case in mpage_writepages fs: don't call ->writepage from __mpage_writepage fs: remove the nobh helpers jfs: stop using the nobh helper ext2: remove nobh support ntfs3: refactor ntfs_writepages mm/folio-compat: Remove migration compatibility functions fs: Remove aops->migratepage() secretmem: Convert to migrate_folio hugetlb: Convert to migrate_folio aio: Convert to migrate_folio f2fs: Convert to filemap_migrate_folio() ubifs: Convert to filemap_migrate_folio() btrfs: Convert btrfs_migratepage to migrate_folio mm/migrate: Add filemap_migrate_folio() mm/migrate: Convert migrate_page() to migrate_folio() nfs: Convert to migrate_folio btrfs: Convert btree_migratepage to migrate_folio mm/migrate: Convert expected_page_refs() to folio_expected_refs() mm/migrate: Convert buffer_migrate_page() to buffer_migrate_folio() ...
This commit is contained in:
@@ -24,13 +24,13 @@ struct parsed_partitions {
|
||||
};
|
||||
|
||||
typedef struct {
|
||||
struct page *v;
|
||||
struct folio *v;
|
||||
} Sector;
|
||||
|
||||
void *read_part_sector(struct parsed_partitions *state, sector_t n, Sector *p);
|
||||
static inline void put_dev_sector(Sector p)
|
||||
{
|
||||
put_page(p.v);
|
||||
folio_put(p.v);
|
||||
}
|
||||
|
||||
static inline void
|
||||
|
||||
@@ -704,25 +704,19 @@ EXPORT_SYMBOL_GPL(bdev_disk_changed);
|
||||
void *read_part_sector(struct parsed_partitions *state, sector_t n, Sector *p)
|
||||
{
|
||||
struct address_space *mapping = state->disk->part0->bd_inode->i_mapping;
|
||||
struct page *page;
|
||||
struct folio *folio;
|
||||
|
||||
if (n >= get_capacity(state->disk)) {
|
||||
state->access_beyond_eod = true;
|
||||
return NULL;
|
||||
goto out;
|
||||
}
|
||||
|
||||
page = read_mapping_page(mapping,
|
||||
(pgoff_t)(n >> (PAGE_SHIFT - 9)), NULL);
|
||||
if (IS_ERR(page))
|
||||
folio = read_mapping_folio(mapping, n >> PAGE_SECTORS_SHIFT, NULL);
|
||||
if (IS_ERR(folio))
|
||||
goto out;
|
||||
if (PageError(page))
|
||||
goto out_put_page;
|
||||
|
||||
p->v = page;
|
||||
return (unsigned char *)page_address(page) +
|
||||
((n & ((1 << (PAGE_SHIFT - 9)) - 1)) << SECTOR_SHIFT);
|
||||
out_put_page:
|
||||
put_page(page);
|
||||
p->v = folio;
|
||||
return folio_address(folio) + offset_in_folio(folio, n * SECTOR_SIZE);
|
||||
out:
|
||||
p->v = NULL;
|
||||
return NULL;
|
||||
|
||||
Reference in New Issue
Block a user