Commit bda2795a authored by Christoph Hellwig's avatar Christoph Hellwig Committed by Jens Axboe
Browse files

fs: remove the special !CONFIG_BLOCK def_blk_fops



def_blk_fops always returns -ENODEV, which dosn't match the return value
of a non-existing block device with CONFIG_BLOCK, which is -ENXIO.
Just remove the extra implementation and fall back to the default
no_open_fops that always returns -ENXIO.

Fixes: 9361401e ("[PATCH] BLOCK: Make it possible to disable the block layer [try #6]")
Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
Link: https://lore.kernel.org/r/20230508144405.41792-1-hch@lst.de


Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
parent 3e49c1e4
Loading
Loading
Loading
Loading
+2 −8
Original line number Diff line number Diff line
@@ -17,14 +17,8 @@ obj-y := open.o read_write.o file_table.o super.o \
		fs_types.o fs_context.o fs_parser.o fsopen.o init.o \
		kernel_read_file.o mnt_idmapping.o remap_range.o

ifeq ($(CONFIG_BLOCK),y)
obj-y +=	buffer.o mpage.o
else
obj-y +=	no-block.o
endif

obj-$(CONFIG_BLOCK)		+= buffer.o mpage.o
obj-$(CONFIG_PROC_FS)		+= proc_namespace.o

obj-$(CONFIG_LEGACY_DIRECT_IO)	+= direct-io.o
obj-y				+= notify/
obj-$(CONFIG_EPOLL)		+= eventpoll.o
+2 −1
Original line number Diff line number Diff line
@@ -2264,6 +2264,7 @@ void init_special_inode(struct inode *inode, umode_t mode, dev_t rdev)
		inode->i_fop = &def_chr_fops;
		inode->i_rdev = rdev;
	} else if (S_ISBLK(mode)) {
		if (IS_ENABLED(CONFIG_BLOCK))
			inode->i_fop = &def_blk_fops;
		inode->i_rdev = rdev;
	} else if (S_ISFIFO(mode))

fs/no-block.c

deleted100644 → 0
+0 −19
Original line number Diff line number Diff line
// SPDX-License-Identifier: GPL-2.0-or-later
/* no-block.c: implementation of routines required for non-BLOCK configuration
 *
 * Copyright (C) 2006 Red Hat, Inc. All Rights Reserved.
 * Written by David Howells (dhowells@redhat.com)
 */

#include <linux/kernel.h>
#include <linux/fs.h>

static int no_blkdev_open(struct inode * inode, struct file * filp)
{
	return -ENODEV;
}

const struct file_operations def_blk_fops = {
	.open		= no_blkdev_open,
	.llseek		= noop_llseek,
};