Commit 0cc5b4ce authored by Christoph Hellwig's avatar Christoph Hellwig Committed by Matthew Wilcox (Oracle)
Browse files

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: default avatarChristoph Hellwig <hch@lst.de>
Reviewed-by: default avatarJan Kara <jack@suse.cz>
Signed-off-by: default avatarMatthew Wilcox (Oracle) <willy@infradead.org>
parent 91397101
Loading
Loading
Loading
Loading
+0 −2
Original line number Diff line number Diff line
@@ -59,8 +59,6 @@ acl Enable POSIX Access Control Lists support
				(requires CONFIG_EXT2_FS_POSIX_ACL).
noacl				Don't support POSIX ACLs.

nobh				Do not attach buffer_heads to file pagecache.

quota, usrquota			Enable user disk quota support
				(requires CONFIG_QUOTA).

+0 −1
Original line number Diff line number Diff line
@@ -795,7 +795,6 @@ extern const struct file_operations ext2_file_operations;
/* inode.c */
extern void ext2_set_file_ops(struct inode *inode);
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;

/* namei.c */
+3 −48
Original line number Diff line number Diff line
@@ -908,25 +908,6 @@ static int ext2_write_end(struct file *file, struct address_space *mapping,
	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)
{
	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,
};

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 = {
	.writepages		= ext2_dax_writepages,
	.direct_IO		= noop_direct_IO,
@@ -1298,13 +1264,10 @@ static int ext2_setsize(struct inode *inode, loff_t newsize)

	inode_dio_wait(inode);

	if (IS_DAX(inode)) {
	if (IS_DAX(inode))
		error = dax_zero_range(inode, newsize,
				       PAGE_ALIGN(newsize) - newsize, NULL,
				       &ext2_iomap_ops);
	} else if (test_opt(inode->i_sb, NOBH))
		error = nobh_truncate_page(inode->i_mapping,
				newsize, ext2_get_block);
	else
		error = block_truncate_page(inode->i_mapping,
				newsize, ext2_get_block);
@@ -1396,8 +1359,6 @@ void ext2_set_file_ops(struct inode *inode)
	inode->i_fop = &ext2_file_operations;
	if (IS_DAX(inode))
		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
		inode->i_mapping->a_ops = &ext2_aops;
}
@@ -1497,9 +1458,6 @@ struct inode *ext2_iget (struct super_block *sb, unsigned long ino)
	} else if (S_ISDIR(inode->i_mode)) {
		inode->i_op = &ext2_dir_inode_operations;
		inode->i_fop = &ext2_dir_operations;
		if (test_opt(inode->i_sb, NOBH))
			inode->i_mapping->a_ops = &ext2_nobh_aops;
		else
		inode->i_mapping->a_ops = &ext2_aops;
	} else if (S_ISLNK(inode->i_mode)) {
		if (ext2_inode_is_fast_symlink(inode)) {
@@ -1510,9 +1468,6 @@ struct inode *ext2_iget (struct super_block *sb, unsigned long ino)
		} else {
			inode->i_op = &ext2_symlink_inode_operations;
			inode_nohighmem(inode);
			if (test_opt(inode->i_sb, NOBH))
				inode->i_mapping->a_ops = &ext2_nobh_aops;
			else
			inode->i_mapping->a_ops = &ext2_aops;
		}
	} else {
+2 −8
Original line number Diff line number Diff line
@@ -178,9 +178,6 @@ static int ext2_symlink (struct user_namespace * mnt_userns, struct inode * dir,
		/* slow symlink */
		inode->i_op = &ext2_symlink_inode_operations;
		inode_nohighmem(inode);
		if (test_opt(inode->i_sb, NOBH))
			inode->i_mapping->a_ops = &ext2_nobh_aops;
		else
		inode->i_mapping->a_ops = &ext2_aops;
		err = page_symlink(inode, symname, l);
		if (err)
@@ -247,9 +244,6 @@ static int ext2_mkdir(struct user_namespace * mnt_userns,

	inode->i_op = &ext2_dir_inode_operations;
	inode->i_fop = &ext2_dir_operations;
	if (test_opt(inode->i_sb, NOBH))
		inode->i_mapping->a_ops = &ext2_nobh_aops;
	else
	inode->i_mapping->a_ops = &ext2_aops;

	inode_inc_link_count(inode);
+2 −4
Original line number Diff line number Diff line
@@ -296,9 +296,6 @@ static int ext2_show_options(struct seq_file *seq, struct dentry *root)
		seq_puts(seq, ",noacl");
#endif

	if (test_opt(sb, NOBH))
		seq_puts(seq, ",nobh");

	if (test_opt(sb, 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);
			break;
		case Opt_nobh:
			set_opt (opts->s_mount_opt, NOBH);
			ext2_msg(sb, KERN_INFO,
				"nobh option not supported");
			break;
#ifdef CONFIG_EXT2_FS_XATTR
		case Opt_user_xattr: