diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c index 1e27155797cc439d2304c0db1201bc528b3095bc..045a7213d6b61bd58d4f4c9fd4cae07a2f8e0f5f 100644 --- a/fs/ext4/inode.c +++ b/fs/ext4/inode.c @@ -1019,7 +1019,12 @@ int ext4_walk_page_buffers(handle_t *handle, struct inode *inode, */ static int ext4_dirty_journalled_data(handle_t *handle, struct buffer_head *bh) { - folio_mark_dirty(bh->b_folio); + struct folio *folio = bh->b_folio; + struct inode *inode = folio->mapping->host; + + /* only regular files have a_ops */ + if (S_ISREG(inode->i_mode)) + folio_mark_dirty(folio); return ext4_handle_dirty_metadata(handle, NULL, bh); }