Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
125 commits
Select commit Hold shift + click to select a range
a3c3eec
ext4: adjust the layout of the ext4_inode_info structure to save memory
jc2870 Jun 3, 2024
985b67c
ext4: filesystems without casefold feature cannot be mounted with sip…
Jun 5, 2024
f67fbac
ext4: fix macro definition error of EXT4_DIRENT_HASH and EXT4_DIRENT_…
Jun 6, 2024
6ceeb2d
ext4: correct comment of ext4_xattr_cmp
Jun 6, 2024
4b14737
ext4: correct comment of ext4_xattr_block_cache_insert
Jun 6, 2024
5071010
ext4: correct comment of h_checksum
Jun 6, 2024
84429b6
fs: Allow fine-grained control of folio sizes
Aug 22, 2024
ab95d23
filemap: allocate mapping_min_order folios in the page cache
Panky-codes Aug 22, 2024
26cfdb3
readahead: allocate folios with mapping_min_order in readahead
Panky-codes Aug 22, 2024
70dd7b5
ext4: correct encrypted dentry name hash when not casefolded
Jul 1, 2024
1a00a39
ext4: no need to continue when the number of entries is 1
ea1davis Jul 1, 2024
bd8daa7
ext4: use seq_putc() in two functions
elfring Jul 13, 2024
0ce160c
ext4: fix timer use-after-free on failed mount
xshen053 Jul 15, 2024
6db3c15
ext4: fix fast commit inode enqueueing during a full journal commit
Jul 17, 2024
23dfdb5
ext4: fix access to uninitialised lock in fc replay path
Jul 18, 2024
f5cacdc
jbd2: stop waiting for space when jbd2_cleanup_journal_tail() returns…
LiBaokun96 Jul 18, 2024
e37c9e1
ext4: reduce stack usage in ext4_mpage_readpages()
Jul 18, 2024
368a83c
ext4: pipeline buffer reads in mext_page_mkuptodate()
Jul 18, 2024
a40759f
ext4: remove array of buffer_heads from mext_page_mkuptodate()
Jul 18, 2024
3e3a693
ext4: tidy the BH loop in mext_page_mkuptodate()
Jul 18, 2024
7e8fb2e
jbd2: fix kernel-doc for j_transaction_overhead_buffers
rddunlap Jul 23, 2024
dd589b0
ext4: fix incorrect tid assumption in ext4_wait_for_tail_page_commit()
Jul 24, 2024
9720906
ext4: fix incorrect tid assumption in __jbd2_log_wait_for_space()
Jul 24, 2024
7a6443e
ext4: fix incorrect tid assumption in jbd2_journal_shrink_checkpoint_…
Jul 24, 2024
ebc4b2c
ext4: fix incorrect tid assumption in ext4_fc_mark_ineligible()
Jul 24, 2024
736c24e
Documentation: ext4.rst: remove obsolete descriptions of noacl/nouser…
stefanct Jul 28, 2024
01cdf03
ext4: annotate struct ext4_xattr_inode_array with __counted_by()
toblux Jul 30, 2024
f0e3c14
jbd2: correctly compare tids with tid_geq function in jbd2_fc_begin_c…
Aug 1, 2024
f2917bd
jbd2: remove dead check in journal_alloc_journal_head
Aug 1, 2024
fa10db1
jbd2: remove unused return value of jbd2_fc_release_bufs
Aug 1, 2024
debbfd9
jbd2: remove unneeded kmap for jh_in->b_frozen_data in jbd2_journal_w…
Aug 1, 2024
7c48e7d
jbd2: remove unneeded done_copy_out variable in jbd2_journal_write_me…
Aug 1, 2024
f47aa3e
jbd2: move escape handle to futher improve jbd2_journal_write_metadat…
Aug 1, 2024
1862304
jbd2: correct comment jbd2_mark_journal_empty
Aug 1, 2024
6140ceb
jbd2: remove unneeded check of ret in jbd2_fc_get_buf
Aug 1, 2024
d1bc560
ext4: nested locking for xattr inode
Aug 1, 2024
d3476f3
ext4: don't set SB_RDONLY after filesystem errors
jankara Aug 5, 2024
dda898d
ext4: dax: fix overflowing extents beyond inode size when partially w…
Aug 9, 2024
e220917
mm: split a folio in minimum folio order chunks
mcgrof Aug 22, 2024
743a275
filemap: cap PTE range to be created to allowed zero fill in folio_ma…
Panky-codes Aug 22, 2024
10553a9
iomap: fix iomap_dio_zero() for fs bs > system page size
Panky-codes Aug 22, 2024
de631e1
xfs: use kvmalloc for xattr buffers
dgchinner Aug 22, 2024
79012cf
xfs: expose block size in stat
Panky-codes Aug 22, 2024
cebf9da
xfs: make the calculation generic in xfs_sb_validate_fsb_count()
Panky-codes Aug 22, 2024
130078d
ext4: factor out ext4_map_create_blocks() to allocate new blocks
zhangyi089 Aug 13, 2024
8b82528
ext4: optimize the EXT4_GET_BLOCKS_DELALLOC_RESERVE flag set
zhangyi089 Aug 13, 2024
eba8c36
ext4: don't set EXTENT_STATUS_DELAYED on allocated blocks
zhangyi089 Aug 13, 2024
fccd632
ext4: let __revise_pending() return newly inserted pendings
zhangyi089 Aug 13, 2024
f3baf33
ext4: passing block allocation information to ext4_es_insert_extent()
zhangyi089 Aug 13, 2024
c543e24
ext4: update delalloc data reserve spcae in ext4_es_insert_extent()
zhangyi089 Aug 13, 2024
6e124d5
ext4: drop ext4_es_delayed_clu()
zhangyi089 Aug 13, 2024
15996a8
ext4: use ext4_map_query_blocks() in ext4_map_blocks()
zhangyi089 Aug 13, 2024
3b4ba26
ext4: drop unused ext4_es_store_status()
zhangyi089 Aug 13, 2024
ce09036
ext4: make extent status types exclusive
zhangyi089 Aug 13, 2024
b224b18
ext4: drop ext4_es_is_delonly()
zhangyi089 Aug 13, 2024
2046657
ext4: drop all delonly descriptions
zhangyi089 Aug 13, 2024
20cee68
ext4: clear EXT4_GROUP_INFO_WAS_TRIMMED_BIT even mount with discard
Aug 17, 2024
7df7c20
xfs: enable block size larger than page size support
Panky-codes Aug 22, 2024
7ccd606
Merge patch series "enable bs > ps in XFS"
brauner Aug 23, 2024
d1dd75d
iomap: remove set_memor_ro() on zero page
mcgrof Aug 26, 2024
31754ea
iomap: add a private argument for iomap_file_buffered_write
josefbacik Aug 27, 2024
c5c810b
iomap: fix handling of dirty folios over unwritten extents
Aug 30, 2024
7d9b474
iomap: make zero range flush conditional on unwritten mappings
Aug 30, 2024
6f634eb
filemap: fix htmldoc warning for mapping_align_index()
Panky-codes Aug 27, 2024
3d693c1
Merge patch series "iomap: flush dirty cache over unwritten mappings …
brauner Sep 3, 2024
5e5b2a5
ext4: avoid buffer_head leak in ext4_mark_inode_used()
Aug 20, 2024
227d31b
ext4: avoid potential buffer_head leak in __ext4_new_inode()
Aug 20, 2024
bb0a12c
ext4: avoid negative min_clusters in find_group_orlov()
Aug 20, 2024
f7c69be
ext4: remove dead check in __ext4_new_inode()
Aug 20, 2024
66eafbd
ext4: move checksum length calculation of inode bitmap into ext4_inod…
Aug 20, 2024
7523a7e
ext4: remove unneeded NULL check of buffer_head in ext4_mark_inode_us…
Aug 20, 2024
7d2b488
ext4: check buffer_verified in advance to avoid unneeded ext4_get_gro…
Aug 20, 2024
cd69f8f
ext4: ext4_search_dir should return a proper error
Aug 21, 2024
4d231b9
ext4: return error on ext4_find_inline_entry
Aug 21, 2024
51e14e7
ext4: explicitly exit when ext4_find_inline_entry returns an error
Aug 21, 2024
c6b72f5
ext4: avoid OOB when system.data xattr changes underneath the filesystem
Aug 21, 2024
edfa71d
ext4: refactor ext4_ext_rm_idx() to index 'path'
LiBaokun96 Aug 22, 2024
3e8a584
ext4: prevent partial update of the extents path
LiBaokun96 Aug 22, 2024
c26ab35
ext4: fix slab-use-after-free in ext4_split_extent_at()
LiBaokun96 Aug 22, 2024
4e2524b
ext4: avoid use-after-free in ext4_ext_show_leaf()
LiBaokun96 Aug 22, 2024
5b4b2dc
ext4: update orig_path in ext4_find_extent()
LiBaokun96 Aug 22, 2024
a164f3a
ext4: aovid use-after-free in ext4_ext_insert_extent()
LiBaokun96 Aug 22, 2024
5c0f4cc
ext4: drop ppath from ext4_ext_replay_update_ex() to avoid double-free
LiBaokun96 Aug 22, 2024
dcaa6c3
ext4: fix double brelse() the buffer of the extents path
LiBaokun96 Aug 22, 2024
6c2b324
ext4: add new ext4_ext_path_brelse() helper
LiBaokun96 Aug 22, 2024
369c944
ext4: propagate errors from ext4_find_extent() in ext4_insert_range()
LiBaokun96 Aug 22, 2024
0be4c0c
ext4: get rid of ppath in ext4_find_extent()
LiBaokun96 Aug 22, 2024
6b854d5
ext4: get rid of ppath in get_ext_path()
LiBaokun96 Aug 22, 2024
a000bc8
ext4: get rid of ppath in ext4_ext_create_new_leaf()
LiBaokun96 Aug 22, 2024
f7d1331
ext4: get rid of ppath in ext4_ext_insert_extent()
LiBaokun96 Aug 22, 2024
1de82b1
ext4: get rid of ppath in ext4_split_extent_at()
LiBaokun96 Aug 22, 2024
f07be1c
ext4: get rid of ppath in ext4_force_split_extent_at()
LiBaokun96 Aug 22, 2024
f74cde0
ext4: get rid of ppath in ext4_split_extent()
LiBaokun96 Aug 22, 2024
225057b
ext4: get rid of ppath in ext4_split_convert_extents()
LiBaokun96 Aug 22, 2024
8d5ad7b
ext4: get rid of ppath in ext4_convert_unwritten_extents_endio()
LiBaokun96 Aug 22, 2024
33c14b8
ext4: get rid of ppath in ext4_ext_convert_to_initialized()
LiBaokun96 Aug 22, 2024
2ec2e10
ext4: get rid of ppath in ext4_ext_handle_unwritten_extents()
LiBaokun96 Aug 22, 2024
4191eef
ext4: get rid of ppath in convert_initialized_extent()
LiBaokun96 Aug 22, 2024
a2c613b
ext4: refactor ext4_swap_extents() to reuse extents path
LiBaokun96 Aug 22, 2024
2352e3e
ext4: make some fast commit functions reuse extents path
LiBaokun96 Aug 22, 2024
5f48d4d
ext4: save unnecessary indentation in ext4_ext_create_new_leaf()
LiBaokun96 Aug 22, 2024
a218743
ext4: fix error message when rejecting the default hash
krisman Aug 27, 2024
59efe53
ext4: dax: keep orphan list before truncate overflow allocated blocks
Aug 29, 2024
3910b51
ext4: persist the new uptodate buffers in ext4_journalled_zero_new_bu…
Aug 30, 2024
6b730a4
ext4: hoist ext4_block_write_begin and replace the __block_write_begin
Aug 30, 2024
cb3de5f
ext4: fix a potential assertion failure due to improperly dirtied buffer
Aug 30, 2024
183aa1d
ext4: remove the special buffer dirty handling in do_journal_get_writ…
Aug 30, 2024
cc749e6
ext4: fix i_data_sem unlock order in ext4_ind_migrate()
Aug 29, 2024
ee85e09
ext4: check stripe size compatibility on remount as well
OjaswinM Aug 30, 2024
ff2beee
ext4: convert EXT4_B2C(sbi->s_stripe) users to EXT4_NUM_B2C
OjaswinM Aug 30, 2024
96319da
orangefs: Constify struct kobj_type
hsiaoh2 Aug 26, 2024
b1daf3f
docs:filesystems: fix spelling and grammar mistakes in iomap design page
Sep 8, 2024
7a9d43e
iomap: handle a post-direct I/O invalidate race in iomap_write_delall…
Sep 10, 2024
b53fdb2
iomap: improve shared block detection in iomap_unshare_iter
Sep 10, 2024
11596dc
iomap: pass flags to iomap_file_buffered_write_punch_delalloc
Sep 10, 2024
492f537
iomap: pass the iomap to the punch callback
Sep 10, 2024
4bceb9b
iomap: remove the iomap_file_buffered_write_punch_delalloc return value
Sep 10, 2024
71fdfcd
Documentation: iomap: fix a typo
Panky-codes Aug 20, 2024
d2d6422
x86: Allow to enable PREEMPT_RT.
Sep 6, 2024
d8fccd9
arm64: Allow to enable PREEMPT_RT.
Sep 6, 2024
2638e4e
riscv: Allow to enable PREEMPT_RT.
Sep 6, 2024
baeb9a7
Merge tag 'sched-rt-2024-09-17' of git://git.kernel.org/pub/scm/linux…
torvalds Sep 20, 2024
171754c
Merge tag 'vfs-6.12.blocksize' of gitolite.kernel.org:pub/scm/linux/k…
torvalds Sep 21, 2024
056f8c4
Merge tag 'ext4_for_linus-6.12-rc1' of git://git.kernel.org/pub/scm/l…
torvalds Sep 21, 2024
1868f9d
Merge tag 'for-linux-6.12-ofs1' of git://git.kernel.org/pub/scm/linux…
torvalds Sep 21, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 0 additions & 10 deletions Documentation/admin-guide/ext4.rst
Original file line number Diff line number Diff line change
Expand Up @@ -212,16 +212,6 @@ When mounting an ext4 filesystem, the following option are accepted:
that ext4's inode table readahead algorithm will pre-read into the
buffer cache. The default value is 32 blocks.

nouser_xattr
Disables Extended User Attributes. See the attr(5) manual page for
more information about extended attributes.

noacl
This option disables POSIX Access Control List support. If ACL support
is enabled in the kernel configuration (CONFIG_EXT4_FS_POSIX_ACL), ACL
is enabled by default on mount. See the acl(5) manual page for more
information about acl.

bsddf (*)
Make 'df' act like BSD.

Expand Down
4 changes: 2 additions & 2 deletions Documentation/filesystems/iomap/design.rst
Original file line number Diff line number Diff line change
Expand Up @@ -165,7 +165,7 @@ structure below:
u16 flags;
struct block_device *bdev;
struct dax_device *dax_dev;
voidw *inline_data;
void *inline_data;
void *private;
const struct iomap_folio_ops *folio_ops;
u64 validity_cookie;
Expand Down Expand Up @@ -426,7 +426,7 @@ iomap is concerned:

The exact locking requirements are specific to the filesystem; for
certain operations, some of these locks can be elided.
All further mention of locking are *recommendations*, not mandates.
All further mentions of locking are *recommendations*, not mandates.
Each filesystem author must figure out the locking for themself.

Bugs and Limitations
Expand Down
1 change: 1 addition & 0 deletions arch/arm64/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -101,6 +101,7 @@ config ARM64
select ARCH_SUPPORTS_NUMA_BALANCING
select ARCH_SUPPORTS_PAGE_TABLE_CHECK
select ARCH_SUPPORTS_PER_VMA_LOCK
select ARCH_SUPPORTS_RT
select ARCH_WANT_BATCHED_UNMAP_TLB_FLUSH
select ARCH_WANT_COMPAT_IPC_PARSE_VERSION if COMPAT
select ARCH_WANT_DEFAULT_BPF_JIT
Expand Down
1 change: 1 addition & 0 deletions arch/riscv/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,7 @@ config RISCV
select ARCH_SUPPORTS_LTO_CLANG_THIN if LLD_VERSION >= 140000
select ARCH_SUPPORTS_PAGE_TABLE_CHECK if MMU
select ARCH_SUPPORTS_PER_VMA_LOCK if MMU
select ARCH_SUPPORTS_RT
select ARCH_SUPPORTS_SHADOW_CALL_STACK if HAVE_SHADOW_CALL_STACK
select ARCH_USE_CMPXCHG_LOCKREF if 64BIT
select ARCH_USE_MEMTEST
Expand Down
1 change: 1 addition & 0 deletions arch/x86/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -124,6 +124,7 @@ config X86
select ARCH_USES_CFI_TRAPS if X86_64 && CFI_CLANG
select ARCH_SUPPORTS_LTO_CLANG
select ARCH_SUPPORTS_LTO_CLANG_THIN
select ARCH_SUPPORTS_RT
select ARCH_USE_BUILTIN_BSWAP
select ARCH_USE_CMPXCHG_LOCKREF if X86_CMPXCHG64
select ARCH_USE_MEMTEST
Expand Down
2 changes: 1 addition & 1 deletion block/fops.c
Original file line number Diff line number Diff line change
Expand Up @@ -666,7 +666,7 @@ blkdev_direct_write(struct kiocb *iocb, struct iov_iter *from)

static ssize_t blkdev_buffered_write(struct kiocb *iocb, struct iov_iter *from)
{
return iomap_file_buffered_write(iocb, from, &blkdev_iomap_ops);
return iomap_file_buffered_write(iocb, from, &blkdev_iomap_ops, NULL);
}

/*
Expand Down
8 changes: 6 additions & 2 deletions fs/ext4/bitmap.c
Original file line number Diff line number Diff line change
Expand Up @@ -18,15 +18,17 @@ unsigned int ext4_count_free(char *bitmap, unsigned int numchars)

int ext4_inode_bitmap_csum_verify(struct super_block *sb,
struct ext4_group_desc *gdp,
struct buffer_head *bh, int sz)
struct buffer_head *bh)
{
__u32 hi;
__u32 provided, calculated;
struct ext4_sb_info *sbi = EXT4_SB(sb);
int sz;

if (!ext4_has_metadata_csum(sb))
return 1;

sz = EXT4_INODES_PER_GROUP(sb) >> 3;
provided = le16_to_cpu(gdp->bg_inode_bitmap_csum_lo);
calculated = ext4_chksum(sbi, sbi->s_csum_seed, (__u8 *)bh->b_data, sz);
if (sbi->s_desc_size >= EXT4_BG_INODE_BITMAP_CSUM_HI_END) {
Expand All @@ -40,14 +42,16 @@ int ext4_inode_bitmap_csum_verify(struct super_block *sb,

void ext4_inode_bitmap_csum_set(struct super_block *sb,
struct ext4_group_desc *gdp,
struct buffer_head *bh, int sz)
struct buffer_head *bh)
{
__u32 csum;
struct ext4_sb_info *sbi = EXT4_SB(sb);
int sz;

if (!ext4_has_metadata_csum(sb))
return;

sz = EXT4_INODES_PER_GROUP(sb) >> 3;
csum = ext4_chksum(sbi, sbi->s_csum_seed, (__u8 *)bh->b_data, sz);
gdp->bg_inode_bitmap_csum_lo = cpu_to_le16(csum & 0xFFFF);
if (sbi->s_desc_size >= EXT4_BG_INODE_BITMAP_CSUM_HI_END)
Expand Down
14 changes: 11 additions & 3 deletions fs/ext4/dir.c
Original file line number Diff line number Diff line change
Expand Up @@ -280,12 +280,20 @@ static int ext4_readdir(struct file *file, struct dir_context *ctx)
struct fscrypt_str de_name =
FSTR_INIT(de->name,
de->name_len);
u32 hash;
u32 minor_hash;

if (IS_CASEFOLDED(inode)) {
hash = EXT4_DIRENT_HASH(de);
minor_hash = EXT4_DIRENT_MINOR_HASH(de);
} else {
hash = 0;
minor_hash = 0;
}

/* Directory is encrypted */
err = fscrypt_fname_disk_to_usr(inode,
EXT4_DIRENT_HASH(de),
EXT4_DIRENT_MINOR_HASH(de),
&de_name, &fstr);
hash, minor_hash, &de_name, &fstr);
de_name = fstr;
fstr.len = save_len;
if (err)
Expand Down
31 changes: 18 additions & 13 deletions fs/ext4/ext4.h
Original file line number Diff line number Diff line change
Expand Up @@ -1058,6 +1058,7 @@ struct ext4_inode_info {

/* Number of ongoing updates on this inode */
atomic_t i_fc_updates;
atomic_t i_unwritten; /* Nr. of inflight conversions pending */

/* Fast commit wait queue for this inode */
wait_queue_head_t i_fc_wait;
Expand Down Expand Up @@ -1106,6 +1107,10 @@ struct ext4_inode_info {

/* mballoc */
atomic_t i_prealloc_active;

/* allocation reservation info for delalloc */
/* In case of bigalloc, this refer to clusters rather than blocks */
unsigned int i_reserved_data_blocks;
struct rb_root i_prealloc_node;
rwlock_t i_prealloc_lock;

Expand All @@ -1122,10 +1127,6 @@ struct ext4_inode_info {
/* ialloc */
ext4_group_t i_last_alloc_group;

/* allocation reservation info for delalloc */
/* In case of bigalloc, this refer to clusters rather than blocks */
unsigned int i_reserved_data_blocks;

/* pending cluster reservations for bigalloc file systems */
struct ext4_pending_tree i_pending_tree;

Expand All @@ -1149,7 +1150,6 @@ struct ext4_inode_info {
*/
struct list_head i_rsv_conversion_list;
struct work_struct i_rsv_conversion_work;
atomic_t i_unwritten; /* Nr. of inflight conversions pending */

spinlock_t i_block_reservation_lock;

Expand Down Expand Up @@ -2338,9 +2338,9 @@ struct ext4_dir_entry_2 {
((struct ext4_dir_entry_hash *) \
(((void *)(entry)) + \
((8 + (entry)->name_len + EXT4_DIR_ROUND) & ~EXT4_DIR_ROUND)))
#define EXT4_DIRENT_HASH(entry) le32_to_cpu(EXT4_DIRENT_HASHES(de)->hash)
#define EXT4_DIRENT_HASH(entry) le32_to_cpu(EXT4_DIRENT_HASHES(entry)->hash)
#define EXT4_DIRENT_MINOR_HASH(entry) \
le32_to_cpu(EXT4_DIRENT_HASHES(de)->minor_hash)
le32_to_cpu(EXT4_DIRENT_HASHES(entry)->minor_hash)

static inline bool ext4_hash_in_dirent(const struct inode *inode)
{
Expand Down Expand Up @@ -2462,6 +2462,7 @@ static inline __le16 ext4_rec_len_to_disk(unsigned len, unsigned blocksize)
#define DX_HASH_HALF_MD4_UNSIGNED 4
#define DX_HASH_TEA_UNSIGNED 5
#define DX_HASH_SIPHASH 6
#define DX_HASH_LAST DX_HASH_SIPHASH

static inline u32 ext4_chksum(struct ext4_sb_info *sbi, u32 crc,
const void *address, unsigned int length)
Expand Down Expand Up @@ -2695,10 +2696,10 @@ struct mmpd_data {
extern unsigned int ext4_count_free(char *bitmap, unsigned numchars);
void ext4_inode_bitmap_csum_set(struct super_block *sb,
struct ext4_group_desc *gdp,
struct buffer_head *bh, int sz);
struct buffer_head *bh);
int ext4_inode_bitmap_csum_verify(struct super_block *sb,
struct ext4_group_desc *gdp,
struct buffer_head *bh, int sz);
struct buffer_head *bh);
void ext4_block_bitmap_csum_set(struct super_block *sb,
struct ext4_group_desc *gdp,
struct buffer_head *bh);
Expand Down Expand Up @@ -3712,11 +3713,12 @@ extern int ext4_map_blocks(handle_t *handle, struct inode *inode,
extern int ext4_ext_calc_credits_for_single_extent(struct inode *inode,
int num,
struct ext4_ext_path *path);
extern int ext4_ext_insert_extent(handle_t *, struct inode *,
struct ext4_ext_path **,
struct ext4_extent *, int);
extern struct ext4_ext_path *ext4_ext_insert_extent(
handle_t *handle, struct inode *inode,
struct ext4_ext_path *path,
struct ext4_extent *newext, int gb_flags);
extern struct ext4_ext_path *ext4_find_extent(struct inode *, ext4_lblk_t,
struct ext4_ext_path **,
struct ext4_ext_path *,
int flags);
extern void ext4_free_ext_path(struct ext4_ext_path *);
extern int ext4_ext_check_inode(struct inode *inode);
Expand Down Expand Up @@ -3853,6 +3855,9 @@ static inline int ext4_buffer_uptodate(struct buffer_head *bh)
return buffer_uptodate(bh);
}

extern int ext4_block_write_begin(handle_t *handle, struct folio *folio,
loff_t pos, unsigned len,
get_block_t *get_block);
#endif /* __KERNEL__ */

#define EFSBADCRC EBADMSG /* Bad CRC detected */
Expand Down
Loading