ext2: remove nobh support

The nobh mode is an obscure feature to save lowlevel for large memory
32-bit configurations while trading for much slower performance and
has been long obsolete.  Remove it.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Jan Kara <jack@suse.cz>
Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
This commit is contained in:
Christoph Hellwig 2022-06-13 07:37:11 +02:00 committed by Matthew Wilcox (Oracle)
parent 9139710148
commit 0cc5b4ce7a
5 changed files with 7 additions and 63 deletions

View File

@ -59,8 +59,6 @@ acl Enable POSIX Access Control Lists support
(requires CONFIG_EXT2_FS_POSIX_ACL). (requires CONFIG_EXT2_FS_POSIX_ACL).
noacl Don't support POSIX ACLs. noacl Don't support POSIX ACLs.
nobh Do not attach buffer_heads to file pagecache.
quota, usrquota Enable user disk quota support quota, usrquota Enable user disk quota support
(requires CONFIG_QUOTA). (requires CONFIG_QUOTA).

View File

@ -795,7 +795,6 @@ extern const struct file_operations ext2_file_operations;
/* inode.c */ /* inode.c */
extern void ext2_set_file_ops(struct inode *inode); extern void ext2_set_file_ops(struct inode *inode);
extern const struct address_space_operations ext2_aops; extern const struct address_space_operations ext2_aops;
extern const struct address_space_operations ext2_nobh_aops;
extern const struct iomap_ops ext2_iomap_ops; extern const struct iomap_ops ext2_iomap_ops;
/* namei.c */ /* namei.c */

View File

@ -908,25 +908,6 @@ static int ext2_write_end(struct file *file, struct address_space *mapping,
return ret; return ret;
} }
static int
ext2_nobh_write_begin(struct file *file, struct address_space *mapping,
loff_t pos, unsigned len, struct page **pagep, void **fsdata)
{
int ret;
ret = nobh_write_begin(mapping, pos, len, pagep, fsdata,
ext2_get_block);
if (ret < 0)
ext2_write_failed(mapping, pos + len);
return ret;
}
static int ext2_nobh_writepage(struct page *page,
struct writeback_control *wbc)
{
return nobh_writepage(page, ext2_get_block, wbc);
}
static sector_t ext2_bmap(struct address_space *mapping, sector_t block) static sector_t ext2_bmap(struct address_space *mapping, sector_t block)
{ {
return generic_block_bmap(mapping,block,ext2_get_block); return generic_block_bmap(mapping,block,ext2_get_block);
@ -978,21 +959,6 @@ const struct address_space_operations ext2_aops = {
.error_remove_page = generic_error_remove_page, .error_remove_page = generic_error_remove_page,
}; };
const struct address_space_operations ext2_nobh_aops = {
.dirty_folio = block_dirty_folio,
.invalidate_folio = block_invalidate_folio,
.read_folio = ext2_read_folio,
.readahead = ext2_readahead,
.writepage = ext2_nobh_writepage,
.write_begin = ext2_nobh_write_begin,
.write_end = nobh_write_end,
.bmap = ext2_bmap,
.direct_IO = ext2_direct_IO,
.writepages = ext2_writepages,
.migrate_folio = buffer_migrate_folio,
.error_remove_page = generic_error_remove_page,
};
static const struct address_space_operations ext2_dax_aops = { static const struct address_space_operations ext2_dax_aops = {
.writepages = ext2_dax_writepages, .writepages = ext2_dax_writepages,
.direct_IO = noop_direct_IO, .direct_IO = noop_direct_IO,
@ -1298,13 +1264,10 @@ static int ext2_setsize(struct inode *inode, loff_t newsize)
inode_dio_wait(inode); inode_dio_wait(inode);
if (IS_DAX(inode)) { if (IS_DAX(inode))
error = dax_zero_range(inode, newsize, error = dax_zero_range(inode, newsize,
PAGE_ALIGN(newsize) - newsize, NULL, PAGE_ALIGN(newsize) - newsize, NULL,
&ext2_iomap_ops); &ext2_iomap_ops);
} else if (test_opt(inode->i_sb, NOBH))
error = nobh_truncate_page(inode->i_mapping,
newsize, ext2_get_block);
else else
error = block_truncate_page(inode->i_mapping, error = block_truncate_page(inode->i_mapping,
newsize, ext2_get_block); newsize, ext2_get_block);
@ -1396,8 +1359,6 @@ void ext2_set_file_ops(struct inode *inode)
inode->i_fop = &ext2_file_operations; inode->i_fop = &ext2_file_operations;
if (IS_DAX(inode)) if (IS_DAX(inode))
inode->i_mapping->a_ops = &ext2_dax_aops; inode->i_mapping->a_ops = &ext2_dax_aops;
else if (test_opt(inode->i_sb, NOBH))
inode->i_mapping->a_ops = &ext2_nobh_aops;
else else
inode->i_mapping->a_ops = &ext2_aops; inode->i_mapping->a_ops = &ext2_aops;
} }
@ -1497,10 +1458,7 @@ struct inode *ext2_iget (struct super_block *sb, unsigned long ino)
} else if (S_ISDIR(inode->i_mode)) { } else if (S_ISDIR(inode->i_mode)) {
inode->i_op = &ext2_dir_inode_operations; inode->i_op = &ext2_dir_inode_operations;
inode->i_fop = &ext2_dir_operations; inode->i_fop = &ext2_dir_operations;
if (test_opt(inode->i_sb, NOBH)) inode->i_mapping->a_ops = &ext2_aops;
inode->i_mapping->a_ops = &ext2_nobh_aops;
else
inode->i_mapping->a_ops = &ext2_aops;
} else if (S_ISLNK(inode->i_mode)) { } else if (S_ISLNK(inode->i_mode)) {
if (ext2_inode_is_fast_symlink(inode)) { if (ext2_inode_is_fast_symlink(inode)) {
inode->i_link = (char *)ei->i_data; inode->i_link = (char *)ei->i_data;
@ -1510,10 +1468,7 @@ struct inode *ext2_iget (struct super_block *sb, unsigned long ino)
} else { } else {
inode->i_op = &ext2_symlink_inode_operations; inode->i_op = &ext2_symlink_inode_operations;
inode_nohighmem(inode); inode_nohighmem(inode);
if (test_opt(inode->i_sb, NOBH)) inode->i_mapping->a_ops = &ext2_aops;
inode->i_mapping->a_ops = &ext2_nobh_aops;
else
inode->i_mapping->a_ops = &ext2_aops;
} }
} else { } else {
inode->i_op = &ext2_special_inode_operations; inode->i_op = &ext2_special_inode_operations;

View File

@ -178,10 +178,7 @@ static int ext2_symlink (struct user_namespace * mnt_userns, struct inode * dir,
/* slow symlink */ /* slow symlink */
inode->i_op = &ext2_symlink_inode_operations; inode->i_op = &ext2_symlink_inode_operations;
inode_nohighmem(inode); inode_nohighmem(inode);
if (test_opt(inode->i_sb, NOBH)) inode->i_mapping->a_ops = &ext2_aops;
inode->i_mapping->a_ops = &ext2_nobh_aops;
else
inode->i_mapping->a_ops = &ext2_aops;
err = page_symlink(inode, symname, l); err = page_symlink(inode, symname, l);
if (err) if (err)
goto out_fail; goto out_fail;
@ -247,10 +244,7 @@ static int ext2_mkdir(struct user_namespace * mnt_userns,
inode->i_op = &ext2_dir_inode_operations; inode->i_op = &ext2_dir_inode_operations;
inode->i_fop = &ext2_dir_operations; inode->i_fop = &ext2_dir_operations;
if (test_opt(inode->i_sb, NOBH)) inode->i_mapping->a_ops = &ext2_aops;
inode->i_mapping->a_ops = &ext2_nobh_aops;
else
inode->i_mapping->a_ops = &ext2_aops;
inode_inc_link_count(inode); inode_inc_link_count(inode);

View File

@ -296,9 +296,6 @@ static int ext2_show_options(struct seq_file *seq, struct dentry *root)
seq_puts(seq, ",noacl"); seq_puts(seq, ",noacl");
#endif #endif
if (test_opt(sb, NOBH))
seq_puts(seq, ",nobh");
if (test_opt(sb, USRQUOTA)) if (test_opt(sb, USRQUOTA))
seq_puts(seq, ",usrquota"); seq_puts(seq, ",usrquota");
@ -551,7 +548,8 @@ static int parse_options(char *options, struct super_block *sb,
clear_opt (opts->s_mount_opt, OLDALLOC); clear_opt (opts->s_mount_opt, OLDALLOC);
break; break;
case Opt_nobh: case Opt_nobh:
set_opt (opts->s_mount_opt, NOBH); ext2_msg(sb, KERN_INFO,
"nobh option not supported");
break; break;
#ifdef CONFIG_EXT2_FS_XATTR #ifdef CONFIG_EXT2_FS_XATTR
case Opt_user_xattr: case Opt_user_xattr: