#ifndef NO_BCACHEFS_FS
#include "bcachefs.h"
#include "btree_iter.h"
#include "extents.h"
#include "fs-io.h"
#include "fs-io-pagecache.h"
#include "subvolume.h"
#include <linux/pagevec.h>
#include <linux/writeback.h>
int bch2_filemap_get_contig_folios_d(struct address_space *mapping,
loff_t start, u64 end,
fgf_t fgp_flags, gfp_t gfp,
folios *fs)
{ … }
int bch2_write_invalidate_inode_pages_range(struct address_space *mapping,
loff_t start, loff_t end)
{ … }
#if 0
static const char * const bch2_folio_sector_states[] = {
#define x …
BCH_FOLIO_SECTOR_STATE()
#undef x
NULL
};
#endif
static inline enum bch_folio_sector_state
folio_sector_dirty(enum bch_folio_sector_state state)
{ … }
static inline enum bch_folio_sector_state
folio_sector_undirty(enum bch_folio_sector_state state)
{ … }
static inline enum bch_folio_sector_state
folio_sector_reserve(enum bch_folio_sector_state state)
{ … }
struct bch_folio *__bch2_folio_create(struct folio *folio, gfp_t gfp)
{ … }
struct bch_folio *bch2_folio_create(struct folio *folio, gfp_t gfp)
{ … }
static unsigned bkey_to_sector_state(struct bkey_s_c k)
{ … }
static void __bch2_folio_set(struct folio *folio,
unsigned pg_offset, unsigned pg_len,
unsigned nr_ptrs, unsigned state)
{ … }
int bch2_folio_set(struct bch_fs *c, subvol_inum inum,
struct folio **fs, unsigned nr_folios)
{ … }
void bch2_bio_page_state_set(struct bio *bio, struct bkey_s_c k)
{ … }
void bch2_mark_pagecache_unallocated(struct bch_inode_info *inode,
u64 start, u64 end)
{ … }
int bch2_mark_pagecache_reserved(struct bch_inode_info *inode,
u64 *start, u64 end,
bool nonblocking)
{ … }
static inline unsigned sectors_to_reserve(struct bch_folio_sector *s,
unsigned nr_replicas)
{ … }
int bch2_get_folio_disk_reservation(struct bch_fs *c,
struct bch_inode_info *inode,
struct folio *folio, bool check_enospc)
{ … }
void bch2_folio_reservation_put(struct bch_fs *c,
struct bch_inode_info *inode,
struct bch2_folio_reservation *res)
{ … }
int bch2_folio_reservation_get(struct bch_fs *c,
struct bch_inode_info *inode,
struct folio *folio,
struct bch2_folio_reservation *res,
size_t offset, size_t len)
{ … }
ssize_t bch2_folio_reservation_get_partial(struct bch_fs *c,
struct bch_inode_info *inode,
struct folio *folio,
struct bch2_folio_reservation *res,
size_t offset, size_t len)
{ … }
static void bch2_clear_folio_bits(struct folio *folio)
{ … }
void bch2_set_folio_dirty(struct bch_fs *c,
struct bch_inode_info *inode,
struct folio *folio,
struct bch2_folio_reservation *res,
unsigned offset, unsigned len)
{ … }
vm_fault_t bch2_page_fault(struct vm_fault *vmf)
{ … }
vm_fault_t bch2_page_mkwrite(struct vm_fault *vmf)
{ … }
void bch2_invalidate_folio(struct folio *folio, size_t offset, size_t length)
{ … }
bool bch2_release_folio(struct folio *folio, gfp_t gfp_mask)
{ … }
static int folio_data_offset(struct folio *folio, loff_t pos,
unsigned min_replicas)
{ … }
loff_t bch2_seek_pagecache_data(struct inode *vinode,
loff_t start_offset,
loff_t end_offset,
unsigned min_replicas,
bool nonblock)
{ … }
static int folio_hole_offset(struct address_space *mapping, loff_t *offset,
unsigned min_replicas, bool nonblock)
{ … }
loff_t bch2_seek_pagecache_hole(struct inode *vinode,
loff_t start_offset,
loff_t end_offset,
unsigned min_replicas,
bool nonblock)
{ … }
int bch2_clamp_data_hole(struct inode *inode,
u64 *hole_start,
u64 *hole_end,
unsigned min_replicas,
bool nonblock)
{ … }
#endif