[PATCH] BLOCK: Make it possible to disable the block layer [try #6]

Make it possible to disable the block layer.  Not all embedded devices require
it, some can make do with just JFFS2, NFS, ramfs, etc - none of which require
the block layer to be present.

This patch does the following:

 (*) Introduces CONFIG_BLOCK to disable the block layer, buffering and blockdev
     support.

 (*) Adds dependencies on CONFIG_BLOCK to any configuration item that controls
     an item that uses the block layer.  This includes:

     (*) Block I/O tracing.

     (*) Disk partition code.

     (*) All filesystems that are block based, eg: Ext3, ReiserFS, ISOFS.

     (*) The SCSI layer.  As far as I can tell, even SCSI chardevs use the
     	 block layer to do scheduling.  Some drivers that use SCSI facilities -
     	 such as USB storage - end up disabled indirectly from this.

     (*) Various block-based device drivers, such as IDE and the old CDROM
     	 drivers.

     (*) MTD blockdev handling and FTL.

     (*) JFFS - which uses set_bdev_super(), something it could avoid doing by
     	 taking a leaf out of JFFS2's book.

 (*) Makes most of the contents of linux/blkdev.h, linux/buffer_head.h and
     linux/elevator.h contingent on CONFIG_BLOCK being set.  sector_div() is,
     however, still used in places, and so is still available.

 (*) Also made contingent are the contents of linux/mpage.h, linux/genhd.h and
     parts of linux/fs.h.

 (*) Makes a number of files in fs/ contingent on CONFIG_BLOCK.

 (*) Makes mm/bounce.c (bounce buffering) contingent on CONFIG_BLOCK.

 (*) set_page_dirty() doesn't call __set_page_dirty_buffers() if CONFIG_BLOCK
     is not enabled.

 (*) fs/no-block.c is created to hold out-of-line stubs and things that are
     required when CONFIG_BLOCK is not set:

     (*) Default blockdev file operations (to give error ENODEV on opening).

 (*) Makes some /proc changes:

     (*) /proc/devices does not list any blockdevs.

     (*) /proc/diskstats and /proc/partitions are contingent on CONFIG_BLOCK.

 (*) Makes some compat ioctl handling contingent on CONFIG_BLOCK.

 (*) If CONFIG_BLOCK is not defined, makes sys_quotactl() return -ENODEV if
     given command other than Q_SYNC or if a special device is specified.

 (*) In init/do_mounts.c, no reference is made to the blockdev routines if
     CONFIG_BLOCK is not defined.  This does not prohibit NFS roots or JFFS2.

 (*) The bdflush, ioprio_set and ioprio_get syscalls can now be absent (return
     error ENOSYS by way of cond_syscall if so).

 (*) The seclvl_bd_claim() and seclvl_bd_release() security calls do nothing if
     CONFIG_BLOCK is not set, since they can't then happen.

Signed-Off-By: David Howells <dhowells@redhat.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
This commit is contained in:
David Howells
2006-09-30 20:45:40 +02:00
committed by Jens Axboe
parent d366e40a1c
commit 9361401eb7
44 changed files with 308 additions and 63 deletions
+20
View File
@@ -1,6 +1,24 @@
# #
# Block layer core configuration # Block layer core configuration
# #
config BLOCK
bool "Enable the block layer"
default y
help
This permits the block layer to be removed from the kernel if it's not
needed (on some embedded devices for example). If this option is
disabled, then blockdev files will become unusable and some
filesystems (such as ext3) will become unavailable.
This option will also disable SCSI character devices and USB storage
since they make use of various block layer definitions and
facilities.
Say Y here unless you know you really don't want to mount disks and
suchlike.
if BLOCK
#XXX - it makes sense to enable this only for 32-bit subarch's, not for x86_64 #XXX - it makes sense to enable this only for 32-bit subarch's, not for x86_64
#for instance. #for instance.
config LBD config LBD
@@ -33,4 +51,6 @@ config LSF
If unsure, say Y. If unsure, say Y.
endif
source block/Kconfig.iosched source block/Kconfig.iosched
+3
View File
@@ -1,3 +1,4 @@
if BLOCK
menu "IO Schedulers" menu "IO Schedulers"
@@ -67,3 +68,5 @@ config DEFAULT_IOSCHED
default "noop" if DEFAULT_NOOP default "noop" if DEFAULT_NOOP
endmenu endmenu
endif
+1 -1
View File
@@ -2,7 +2,7 @@
# Makefile for the kernel block layer # Makefile for the kernel block layer
# #
obj-y := elevator.o ll_rw_blk.o ioctl.o genhd.o scsi_ioctl.o obj-$(CONFIG_BLOCK) := elevator.o ll_rw_blk.o ioctl.o genhd.o scsi_ioctl.o
obj-$(CONFIG_IOSCHED_NOOP) += noop-iosched.o obj-$(CONFIG_IOSCHED_NOOP) += noop-iosched.o
obj-$(CONFIG_IOSCHED_AS) += as-iosched.o obj-$(CONFIG_IOSCHED_AS) += as-iosched.o
+4
View File
@@ -2,6 +2,8 @@
# Block device driver configuration # Block device driver configuration
# #
if BLOCK
menu "Block devices" menu "Block devices"
config BLK_DEV_FD config BLK_DEV_FD
@@ -468,3 +470,5 @@ config ATA_OVER_ETH
devices like the Coraid EtherDrive (R) Storage Blade. devices like the Coraid EtherDrive (R) Storage Blade.
endmenu endmenu
endif
+1 -1
View File
@@ -3,7 +3,7 @@
# #
menu "Old CD-ROM drivers (not SCSI, not IDE)" menu "Old CD-ROM drivers (not SCSI, not IDE)"
depends on ISA depends on ISA && BLOCK
config CD_NO_IDESCSI config CD_NO_IDESCSI
bool "Support non-SCSI/IDE/ATAPI CDROM drives" bool "Support non-SCSI/IDE/ATAPI CDROM drives"
+1
View File
@@ -1006,6 +1006,7 @@ config GPIO_VR41XX
config RAW_DRIVER config RAW_DRIVER
tristate "RAW driver (/dev/raw/rawN) (OBSOLETE)" tristate "RAW driver (/dev/raw/rawN) (OBSOLETE)"
depends on BLOCK
help help
The raw driver permits block devices to be bound to /dev/raw/rawN. The raw driver permits block devices to be bound to /dev/raw/rawN.
Once bound, I/O against /dev/raw/rawN uses efficient zero-copy I/O. Once bound, I/O against /dev/raw/rawN uses efficient zero-copy I/O.
+4
View File
@@ -655,6 +655,7 @@ void add_interrupt_randomness(int irq)
add_timer_randomness(irq_timer_state[irq], 0x100 + irq); add_timer_randomness(irq_timer_state[irq], 0x100 + irq);
} }
#ifdef CONFIG_BLOCK
void add_disk_randomness(struct gendisk *disk) void add_disk_randomness(struct gendisk *disk)
{ {
if (!disk || !disk->random) if (!disk || !disk->random)
@@ -667,6 +668,7 @@ void add_disk_randomness(struct gendisk *disk)
} }
EXPORT_SYMBOL(add_disk_randomness); EXPORT_SYMBOL(add_disk_randomness);
#endif
#define EXTRACT_SIZE 10 #define EXTRACT_SIZE 10
@@ -918,6 +920,7 @@ void rand_initialize_irq(int irq)
} }
} }
#ifdef CONFIG_BLOCK
void rand_initialize_disk(struct gendisk *disk) void rand_initialize_disk(struct gendisk *disk)
{ {
struct timer_rand_state *state; struct timer_rand_state *state;
@@ -932,6 +935,7 @@ void rand_initialize_disk(struct gendisk *disk)
disk->random = state; disk->random = state;
} }
} }
#endif
static ssize_t static ssize_t
random_read(struct file * file, char __user * buf, size_t nbytes, loff_t *ppos) random_read(struct file * file, char __user * buf, size_t nbytes, loff_t *ppos)
+4
View File
@@ -4,6 +4,8 @@
# Andre Hedrick <andre@linux-ide.org> # Andre Hedrick <andre@linux-ide.org>
# #
if BLOCK
menu "ATA/ATAPI/MFM/RLL support" menu "ATA/ATAPI/MFM/RLL support"
config IDE config IDE
@@ -1082,3 +1084,5 @@ config BLK_DEV_HD
endif endif
endmenu endmenu
endif
+3
View File
@@ -2,6 +2,8 @@
# Block device driver configuration # Block device driver configuration
# #
if BLOCK
menu "Multi-device support (RAID and LVM)" menu "Multi-device support (RAID and LVM)"
config MD config MD
@@ -251,3 +253,4 @@ config DM_MULTIPATH_EMC
endmenu endmenu
endif
+1 -1
View File
@@ -88,7 +88,7 @@ config I2O_BUS
config I2O_BLOCK config I2O_BLOCK
tristate "I2O Block OSM" tristate "I2O Block OSM"
depends on I2O depends on I2O && BLOCK
---help--- ---help---
Include support for the I2O Block OSM. The Block OSM presents disk Include support for the I2O Block OSM. The Block OSM presents disk
and other structured block devices to the operating system. If you and other structured block devices to the operating system. If you
+1 -1
View File
@@ -21,7 +21,7 @@ config MMC_DEBUG
config MMC_BLOCK config MMC_BLOCK
tristate "MMC block device driver" tristate "MMC block device driver"
depends on MMC depends on MMC && BLOCK
default y default y
help help
Say Y here to enable the MMC block device driver support. Say Y here to enable the MMC block device driver support.
+2 -1
View File
@@ -24,7 +24,8 @@ obj-$(CONFIG_MMC_AU1X) += au1xmmc.o
obj-$(CONFIG_MMC_OMAP) += omap.o obj-$(CONFIG_MMC_OMAP) += omap.o
obj-$(CONFIG_MMC_AT91RM9200) += at91_mci.o obj-$(CONFIG_MMC_AT91RM9200) += at91_mci.o
mmc_core-y := mmc.o mmc_queue.o mmc_sysfs.o mmc_core-y := mmc.o mmc_sysfs.o
mmc_core-$(CONFIG_BLOCK) += mmc_queue.o
ifeq ($(CONFIG_MMC_DEBUG),y) ifeq ($(CONFIG_MMC_DEBUG),y)
EXTRA_CFLAGS += -DDEBUG EXTRA_CFLAGS += -DDEBUG
+6 -6
View File
@@ -166,7 +166,7 @@ config MTD_CHAR
config MTD_BLOCK config MTD_BLOCK
tristate "Caching block device access to MTD devices" tristate "Caching block device access to MTD devices"
depends on MTD depends on MTD && BLOCK
---help--- ---help---
Although most flash chips have an erase size too large to be useful Although most flash chips have an erase size too large to be useful
as block devices, it is possible to use MTD devices which are based as block devices, it is possible to use MTD devices which are based
@@ -188,7 +188,7 @@ config MTD_BLOCK
config MTD_BLOCK_RO config MTD_BLOCK_RO
tristate "Readonly block device access to MTD devices" tristate "Readonly block device access to MTD devices"
depends on MTD_BLOCK!=y && MTD depends on MTD_BLOCK!=y && MTD && BLOCK
help help
This allows you to mount read-only file systems (such as cramfs) This allows you to mount read-only file systems (such as cramfs)
from an MTD device, without the overhead (and danger) of the caching from an MTD device, without the overhead (and danger) of the caching
@@ -199,7 +199,7 @@ config MTD_BLOCK_RO
config FTL config FTL
tristate "FTL (Flash Translation Layer) support" tristate "FTL (Flash Translation Layer) support"
depends on MTD depends on MTD && BLOCK
---help--- ---help---
This provides support for the original Flash Translation Layer which This provides support for the original Flash Translation Layer which
is part of the PCMCIA specification. It uses a kind of pseudo- is part of the PCMCIA specification. It uses a kind of pseudo-
@@ -215,7 +215,7 @@ config FTL
config NFTL config NFTL
tristate "NFTL (NAND Flash Translation Layer) support" tristate "NFTL (NAND Flash Translation Layer) support"
depends on MTD depends on MTD && BLOCK
---help--- ---help---
This provides support for the NAND Flash Translation Layer which is This provides support for the NAND Flash Translation Layer which is
used on M-Systems' DiskOnChip devices. It uses a kind of pseudo- used on M-Systems' DiskOnChip devices. It uses a kind of pseudo-
@@ -238,7 +238,7 @@ config NFTL_RW
config INFTL config INFTL
tristate "INFTL (Inverse NAND Flash Translation Layer) support" tristate "INFTL (Inverse NAND Flash Translation Layer) support"
depends on MTD depends on MTD && BLOCK
---help--- ---help---
This provides support for the Inverse NAND Flash Translation This provides support for the Inverse NAND Flash Translation
Layer which is used on M-Systems' newer DiskOnChip devices. It Layer which is used on M-Systems' newer DiskOnChip devices. It
@@ -255,7 +255,7 @@ config INFTL
config RFD_FTL config RFD_FTL
tristate "Resident Flash Disk (Flash Translation Layer) support" tristate "Resident Flash Disk (Flash Translation Layer) support"
depends on MTD depends on MTD && BLOCK
---help--- ---help---
This provides support for the flash translation layer known This provides support for the flash translation layer known
as the Resident Flash Disk (RFD), as used by the Embedded BIOS as the Resident Flash Disk (RFD), as used by the Embedded BIOS
+1 -1
View File
@@ -136,7 +136,7 @@ config MTDRAM_ABS_POS
config MTD_BLOCK2MTD config MTD_BLOCK2MTD
tristate "MTD using block device" tristate "MTD using block device"
depends on MTD depends on MTD && BLOCK
help help
This driver allows a block device to appear as an MTD. It would This driver allows a block device to appear as an MTD. It would
generally be used in the following cases: generally be used in the following cases:
+1 -1
View File
@@ -1,4 +1,4 @@
if S390 if S390 && BLOCK
comment "S/390 block device drivers" comment "S/390 block device drivers"
depends on S390 depends on S390
+2
View File
@@ -3,11 +3,13 @@ menu "SCSI device support"
config RAID_ATTRS config RAID_ATTRS
tristate "RAID Transport Class" tristate "RAID Transport Class"
default n default n
depends on BLOCK
---help--- ---help---
Provides RAID Provides RAID
config SCSI config SCSI
tristate "SCSI device support" tristate "SCSI device support"
depends on BLOCK
---help--- ---help---
If you want to use a SCSI hard disk, SCSI tape drive, SCSI CD-ROM or If you want to use a SCSI hard disk, SCSI tape drive, SCSI CD-ROM or
any other SCSI device under Linux, say Y and make sure that you know any other SCSI device under Linux, say Y and make sure that you know
+24 -7
View File
@@ -4,6 +4,8 @@
menu "File systems" menu "File systems"
if BLOCK
config EXT2_FS config EXT2_FS
tristate "Second extended fs support" tristate "Second extended fs support"
help help
@@ -399,6 +401,8 @@ config ROMFS_FS
If you don't know whether you need it, then you don't need it: If you don't know whether you need it, then you don't need it:
answer N. answer N.
endif
config INOTIFY config INOTIFY
bool "Inotify file change notification support" bool "Inotify file change notification support"
default y default y
@@ -530,6 +534,7 @@ config FUSE_FS
If you want to develop a userspace FS, or if you want to use If you want to develop a userspace FS, or if you want to use
a filesystem based on FUSE, answer Y or M. a filesystem based on FUSE, answer Y or M.
if BLOCK
menu "CD-ROM/DVD Filesystems" menu "CD-ROM/DVD Filesystems"
config ISO9660_FS config ISO9660_FS
@@ -597,7 +602,9 @@ config UDF_NLS
depends on (UDF_FS=m && NLS) || (UDF_FS=y && NLS=y) depends on (UDF_FS=m && NLS) || (UDF_FS=y && NLS=y)
endmenu endmenu
endif
if BLOCK
menu "DOS/FAT/NT Filesystems" menu "DOS/FAT/NT Filesystems"
config FAT_FS config FAT_FS
@@ -782,6 +789,7 @@ config NTFS_RW
It is perfectly safe to say N here. It is perfectly safe to say N here.
endmenu endmenu
endif
menu "Pseudo filesystems" menu "Pseudo filesystems"
@@ -939,7 +947,7 @@ menu "Miscellaneous filesystems"
config ADFS_FS config ADFS_FS
tristate "ADFS file system support (EXPERIMENTAL)" tristate "ADFS file system support (EXPERIMENTAL)"
depends on EXPERIMENTAL depends on BLOCK && EXPERIMENTAL
help help
The Acorn Disc Filing System is the standard file system of the The Acorn Disc Filing System is the standard file system of the
RiscOS operating system which runs on Acorn's ARM-based Risc PC RiscOS operating system which runs on Acorn's ARM-based Risc PC
@@ -967,7 +975,7 @@ config ADFS_FS_RW
config AFFS_FS config AFFS_FS
tristate "Amiga FFS file system support (EXPERIMENTAL)" tristate "Amiga FFS file system support (EXPERIMENTAL)"
depends on EXPERIMENTAL depends on BLOCK && EXPERIMENTAL
help help
The Fast File System (FFS) is the common file system used on hard The Fast File System (FFS) is the common file system used on hard
disks by Amiga(tm) systems since AmigaOS Version 1.3 (34.20). Say Y disks by Amiga(tm) systems since AmigaOS Version 1.3 (34.20). Say Y
@@ -989,7 +997,7 @@ config AFFS_FS
config HFS_FS config HFS_FS
tristate "Apple Macintosh file system support (EXPERIMENTAL)" tristate "Apple Macintosh file system support (EXPERIMENTAL)"
depends on EXPERIMENTAL depends on BLOCK && EXPERIMENTAL
select NLS select NLS
help help
If you say Y here, you will be able to mount Macintosh-formatted If you say Y here, you will be able to mount Macintosh-formatted
@@ -1002,6 +1010,7 @@ config HFS_FS
config HFSPLUS_FS config HFSPLUS_FS
tristate "Apple Extended HFS file system support" tristate "Apple Extended HFS file system support"
depends on BLOCK
select NLS select NLS
select NLS_UTF8 select NLS_UTF8
help help
@@ -1015,7 +1024,7 @@ config HFSPLUS_FS
config BEFS_FS config BEFS_FS
tristate "BeOS file system (BeFS) support (read only) (EXPERIMENTAL)" tristate "BeOS file system (BeFS) support (read only) (EXPERIMENTAL)"
depends on EXPERIMENTAL depends on BLOCK && EXPERIMENTAL
select NLS select NLS
help help
The BeOS File System (BeFS) is the native file system of Be, Inc's The BeOS File System (BeFS) is the native file system of Be, Inc's
@@ -1042,7 +1051,7 @@ config BEFS_DEBUG
config BFS_FS config BFS_FS
tristate "BFS file system support (EXPERIMENTAL)" tristate "BFS file system support (EXPERIMENTAL)"
depends on EXPERIMENTAL depends on BLOCK && EXPERIMENTAL
help help
Boot File System (BFS) is a file system used under SCO UnixWare to Boot File System (BFS) is a file system used under SCO UnixWare to
allow the bootloader access to the kernel image and other important allow the bootloader access to the kernel image and other important
@@ -1064,7 +1073,7 @@ config BFS_FS
config EFS_FS config EFS_FS
tristate "EFS file system support (read only) (EXPERIMENTAL)" tristate "EFS file system support (read only) (EXPERIMENTAL)"
depends on EXPERIMENTAL depends on BLOCK && EXPERIMENTAL
help help
EFS is an older file system used for non-ISO9660 CD-ROMs and hard EFS is an older file system used for non-ISO9660 CD-ROMs and hard
disk partitions by SGI's IRIX operating system (IRIX 6.0 and newer disk partitions by SGI's IRIX operating system (IRIX 6.0 and newer
@@ -1079,7 +1088,7 @@ config EFS_FS
config JFFS_FS config JFFS_FS
tristate "Journalling Flash File System (JFFS) support" tristate "Journalling Flash File System (JFFS) support"
depends on MTD depends on MTD && BLOCK
help help
JFFS is the Journaling Flash File System developed by Axis JFFS is the Journaling Flash File System developed by Axis
Communications in Sweden, aimed at providing a crash/powerdown-safe Communications in Sweden, aimed at providing a crash/powerdown-safe
@@ -1264,6 +1273,7 @@ endchoice
config CRAMFS config CRAMFS
tristate "Compressed ROM file system support (cramfs)" tristate "Compressed ROM file system support (cramfs)"
depends on BLOCK
select ZLIB_INFLATE select ZLIB_INFLATE
help help
Saying Y here includes support for CramFs (Compressed ROM File Saying Y here includes support for CramFs (Compressed ROM File
@@ -1283,6 +1293,7 @@ config CRAMFS
config VXFS_FS config VXFS_FS
tristate "FreeVxFS file system support (VERITAS VxFS(TM) compatible)" tristate "FreeVxFS file system support (VERITAS VxFS(TM) compatible)"
depends on BLOCK
help help
FreeVxFS is a file system driver that support the VERITAS VxFS(TM) FreeVxFS is a file system driver that support the VERITAS VxFS(TM)
file system format. VERITAS VxFS(TM) is the standard file system file system format. VERITAS VxFS(TM) is the standard file system
@@ -1300,6 +1311,7 @@ config VXFS_FS
config HPFS_FS config HPFS_FS
tristate "OS/2 HPFS file system support" tristate "OS/2 HPFS file system support"
depends on BLOCK
help help
OS/2 is IBM's operating system for PC's, the same as Warp, and HPFS OS/2 is IBM's operating system for PC's, the same as Warp, and HPFS
is the file system used for organizing files on OS/2 hard disk is the file system used for organizing files on OS/2 hard disk
@@ -1316,6 +1328,7 @@ config HPFS_FS
config QNX4FS_FS config QNX4FS_FS
tristate "QNX4 file system support (read only)" tristate "QNX4 file system support (read only)"
depends on BLOCK
help help
This is the file system used by the real-time operating systems This is the file system used by the real-time operating systems
QNX 4 and QNX 6 (the latter is also called QNX RTP). QNX 4 and QNX 6 (the latter is also called QNX RTP).
@@ -1343,6 +1356,7 @@ config QNX4FS_RW
config SYSV_FS config SYSV_FS
tristate "System V/Xenix/V7/Coherent file system support" tristate "System V/Xenix/V7/Coherent file system support"
depends on BLOCK
help help
SCO, Xenix and Coherent are commercial Unix systems for Intel SCO, Xenix and Coherent are commercial Unix systems for Intel
machines, and Version 7 was used on the DEC PDP-11. Saying Y machines, and Version 7 was used on the DEC PDP-11. Saying Y
@@ -1381,6 +1395,7 @@ config SYSV_FS
config UFS_FS config UFS_FS
tristate "UFS file system support (read only)" tristate "UFS file system support (read only)"
depends on BLOCK
help help
BSD and derivate versions of Unix (such as SunOS, FreeBSD, NetBSD, BSD and derivate versions of Unix (such as SunOS, FreeBSD, NetBSD,
OpenBSD and NeXTstep) use a file system called UFS. Some System V OpenBSD and NeXTstep) use a file system called UFS. Some System V
@@ -1959,11 +1974,13 @@ config GENERIC_ACL
endmenu endmenu
if BLOCK
menu "Partition Types" menu "Partition Types"
source "fs/partitions/Kconfig" source "fs/partitions/Kconfig"
endmenu endmenu
endif
source "fs/nls/Kconfig" source "fs/nls/Kconfig"
+10 -4
View File
@@ -5,12 +5,18 @@
# Rewritten to use lists instead of if-statements. # Rewritten to use lists instead of if-statements.
# #
obj-y := open.o read_write.o file_table.o buffer.o bio.o super.o \ obj-y := open.o read_write.o file_table.o super.o \
block_dev.o char_dev.o stat.o exec.o pipe.o namei.o fcntl.o \ char_dev.o stat.o exec.o pipe.o namei.o fcntl.o \
ioctl.o readdir.o select.o fifo.o locks.o dcache.o inode.o \ ioctl.o readdir.o select.o fifo.o locks.o dcache.o inode.o \
attr.o bad_inode.o file.o filesystems.o namespace.o aio.o \ attr.o bad_inode.o file.o filesystems.o namespace.o aio.o \
seq_file.o xattr.o libfs.o fs-writeback.o mpage.o direct-io.o \ seq_file.o xattr.o libfs.o fs-writeback.o \
ioprio.o pnode.o drop_caches.o splice.o sync.o pnode.o drop_caches.o splice.o sync.o
ifeq ($(CONFIG_BLOCK),y)
obj-y += buffer.o bio.o block_dev.o direct-io.o mpage.o ioprio.o
else
obj-y += no-block.o
endif
obj-$(CONFIG_INOTIFY) += inotify.o obj-$(CONFIG_INOTIFY) += inotify.o
obj-$(CONFIG_INOTIFY_USER) += inotify_user.o obj-$(CONFIG_INOTIFY_USER) += inotify_user.o
+18
View File
@@ -645,6 +645,7 @@ out:
} }
#endif #endif
#ifdef CONFIG_BLOCK
struct hd_geometry32 { struct hd_geometry32 {
unsigned char heads; unsigned char heads;
unsigned char sectors; unsigned char sectors;
@@ -869,6 +870,7 @@ static int sg_grt_trans(unsigned int fd, unsigned int cmd, unsigned long arg)
} }
return err; return err;
} }
#endif /* CONFIG_BLOCK */
struct sock_fprog32 { struct sock_fprog32 {
unsigned short len; unsigned short len;
@@ -992,6 +994,7 @@ static int ppp_ioctl_trans(unsigned int fd, unsigned int cmd, unsigned long arg)
} }
#ifdef CONFIG_BLOCK
struct mtget32 { struct mtget32 {
compat_long_t mt_type; compat_long_t mt_type;
compat_long_t mt_resid; compat_long_t mt_resid;
@@ -1164,6 +1167,7 @@ static int cdrom_ioctl_trans(unsigned int fd, unsigned int cmd, unsigned long ar
return err; return err;
} }
#endif /* CONFIG_BLOCK */
#ifdef CONFIG_VT #ifdef CONFIG_VT
@@ -1491,6 +1495,7 @@ ret_einval(unsigned int fd, unsigned int cmd, unsigned long arg)
return -EINVAL; return -EINVAL;
} }
#ifdef CONFIG_BLOCK
static int broken_blkgetsize(unsigned int fd, unsigned int cmd, unsigned long arg) static int broken_blkgetsize(unsigned int fd, unsigned int cmd, unsigned long arg)
{ {
/* The mkswap binary hard codes it to Intel value :-((( */ /* The mkswap binary hard codes it to Intel value :-((( */
@@ -1525,12 +1530,14 @@ static int blkpg_ioctl_trans(unsigned int fd, unsigned int cmd, unsigned long ar
return sys_ioctl(fd, cmd, (unsigned long)a); return sys_ioctl(fd, cmd, (unsigned long)a);
} }
#endif
static int ioc_settimeout(unsigned int fd, unsigned int cmd, unsigned long arg) static int ioc_settimeout(unsigned int fd, unsigned int cmd, unsigned long arg)
{ {
return rw_long(fd, AUTOFS_IOC_SETTIMEOUT, arg); return rw_long(fd, AUTOFS_IOC_SETTIMEOUT, arg);
} }
#ifdef CONFIG_BLOCK
/* Fix sizeof(sizeof()) breakage */ /* Fix sizeof(sizeof()) breakage */
#define BLKBSZGET_32 _IOR(0x12,112,int) #define BLKBSZGET_32 _IOR(0x12,112,int)
#define BLKBSZSET_32 _IOW(0x12,113,int) #define BLKBSZSET_32 _IOW(0x12,113,int)
@@ -1551,6 +1558,7 @@ static int do_blkgetsize64(unsigned int fd, unsigned int cmd,
{ {
return sys_ioctl(fd, BLKGETSIZE64, (unsigned long)compat_ptr(arg)); return sys_ioctl(fd, BLKGETSIZE64, (unsigned long)compat_ptr(arg));
} }
#endif
/* Bluetooth ioctls */ /* Bluetooth ioctls */
#define HCIUARTSETPROTO _IOW('U', 200, int) #define HCIUARTSETPROTO _IOW('U', 200, int)
@@ -1571,6 +1579,7 @@ static int do_blkgetsize64(unsigned int fd, unsigned int cmd,
#define HIDPGETCONNLIST _IOR('H', 210, int) #define HIDPGETCONNLIST _IOR('H', 210, int)
#define HIDPGETCONNINFO _IOR('H', 211, int) #define HIDPGETCONNINFO _IOR('H', 211, int)
#ifdef CONFIG_BLOCK
struct floppy_struct32 { struct floppy_struct32 {
compat_uint_t size; compat_uint_t size;
compat_uint_t sect; compat_uint_t sect;
@@ -1895,6 +1904,7 @@ out:
kfree(karg); kfree(karg);
return err; return err;
} }
#endif
struct mtd_oob_buf32 { struct mtd_oob_buf32 {
u_int32_t start; u_int32_t start;
@@ -1936,6 +1946,7 @@ static int mtd_rw_oob(unsigned int fd, unsigned int cmd, unsigned long arg)
return err; return err;
} }
#ifdef CONFIG_BLOCK
struct raw32_config_request struct raw32_config_request
{ {
compat_int_t raw_minor; compat_int_t raw_minor;
@@ -2000,6 +2011,7 @@ static int raw_ioctl(unsigned fd, unsigned cmd, unsigned long arg)
} }
return ret; return ret;
} }
#endif /* CONFIG_BLOCK */
struct serial_struct32 { struct serial_struct32 {
compat_int_t type; compat_int_t type;
@@ -2606,6 +2618,7 @@ HANDLE_IOCTL(SIOCBRDELIF, dev_ifsioc)
HANDLE_IOCTL(SIOCRTMSG, ret_einval) HANDLE_IOCTL(SIOCRTMSG, ret_einval)
HANDLE_IOCTL(SIOCGSTAMP, do_siocgstamp) HANDLE_IOCTL(SIOCGSTAMP, do_siocgstamp)
#endif #endif
#ifdef CONFIG_BLOCK
HANDLE_IOCTL(HDIO_GETGEO, hdio_getgeo) HANDLE_IOCTL(HDIO_GETGEO, hdio_getgeo)
HANDLE_IOCTL(BLKRAGET, w_long) HANDLE_IOCTL(BLKRAGET, w_long)
HANDLE_IOCTL(BLKGETSIZE, w_long) HANDLE_IOCTL(BLKGETSIZE, w_long)
@@ -2631,14 +2644,17 @@ HANDLE_IOCTL(FDGETFDCSTAT32, fd_ioctl_trans)
HANDLE_IOCTL(FDWERRORGET32, fd_ioctl_trans) HANDLE_IOCTL(FDWERRORGET32, fd_ioctl_trans)
HANDLE_IOCTL(SG_IO,sg_ioctl_trans) HANDLE_IOCTL(SG_IO,sg_ioctl_trans)
HANDLE_IOCTL(SG_GET_REQUEST_TABLE, sg_grt_trans) HANDLE_IOCTL(SG_GET_REQUEST_TABLE, sg_grt_trans)
#endif
HANDLE_IOCTL(PPPIOCGIDLE32, ppp_ioctl_trans) HANDLE_IOCTL(PPPIOCGIDLE32, ppp_ioctl_trans)
HANDLE_IOCTL(PPPIOCSCOMPRESS32, ppp_ioctl_trans) HANDLE_IOCTL(PPPIOCSCOMPRESS32, ppp_ioctl_trans)
HANDLE_IOCTL(PPPIOCSPASS32, ppp_sock_fprog_ioctl_trans) HANDLE_IOCTL(PPPIOCSPASS32, ppp_sock_fprog_ioctl_trans)
HANDLE_IOCTL(PPPIOCSACTIVE32, ppp_sock_fprog_ioctl_trans) HANDLE_IOCTL(PPPIOCSACTIVE32, ppp_sock_fprog_ioctl_trans)
#ifdef CONFIG_BLOCK
HANDLE_IOCTL(MTIOCGET32, mt_ioctl_trans) HANDLE_IOCTL(MTIOCGET32, mt_ioctl_trans)
HANDLE_IOCTL(MTIOCPOS32, mt_ioctl_trans) HANDLE_IOCTL(MTIOCPOS32, mt_ioctl_trans)
HANDLE_IOCTL(CDROMREADAUDIO, cdrom_ioctl_trans) HANDLE_IOCTL(CDROMREADAUDIO, cdrom_ioctl_trans)
HANDLE_IOCTL(CDROM_SEND_PACKET, cdrom_ioctl_trans) HANDLE_IOCTL(CDROM_SEND_PACKET, cdrom_ioctl_trans)
#endif
#define AUTOFS_IOC_SETTIMEOUT32 _IOWR(0x93,0x64,unsigned int) #define AUTOFS_IOC_SETTIMEOUT32 _IOWR(0x93,0x64,unsigned int)
HANDLE_IOCTL(AUTOFS_IOC_SETTIMEOUT32, ioc_settimeout) HANDLE_IOCTL(AUTOFS_IOC_SETTIMEOUT32, ioc_settimeout)
#ifdef CONFIG_VT #ifdef CONFIG_VT
@@ -2677,12 +2693,14 @@ HANDLE_IOCTL(SONET_SETFRAMING, do_atm_ioctl)
HANDLE_IOCTL(SONET_GETFRAMING, do_atm_ioctl) HANDLE_IOCTL(SONET_GETFRAMING, do_atm_ioctl)
HANDLE_IOCTL(SONET_GETFRSENSE, do_atm_ioctl) HANDLE_IOCTL(SONET_GETFRSENSE, do_atm_ioctl)
/* block stuff */ /* block stuff */
#ifdef CONFIG_BLOCK
HANDLE_IOCTL(BLKBSZGET_32, do_blkbszget) HANDLE_IOCTL(BLKBSZGET_32, do_blkbszget)
HANDLE_IOCTL(BLKBSZSET_32, do_blkbszset) HANDLE_IOCTL(BLKBSZSET_32, do_blkbszset)
HANDLE_IOCTL(BLKGETSIZE64_32, do_blkgetsize64) HANDLE_IOCTL(BLKGETSIZE64_32, do_blkgetsize64)
/* Raw devices */ /* Raw devices */
HANDLE_IOCTL(RAW_SETBIND, raw_ioctl) HANDLE_IOCTL(RAW_SETBIND, raw_ioctl)
HANDLE_IOCTL(RAW_GETBIND, raw_ioctl) HANDLE_IOCTL(RAW_GETBIND, raw_ioctl)
#endif
/* Serial */ /* Serial */
HANDLE_IOCTL(TIOCGSERIAL, serial_struct_ioctl) HANDLE_IOCTL(TIOCGSERIAL, serial_struct_ioctl)
HANDLE_IOCTL(TIOCSSERIAL, serial_struct_ioctl) HANDLE_IOCTL(TIOCSSERIAL, serial_struct_ioctl)
+6
View File
@@ -14,10 +14,16 @@
/* /*
* block_dev.c * block_dev.c
*/ */
#ifdef CONFIG_BLOCK
extern struct super_block *blockdev_superblock; extern struct super_block *blockdev_superblock;
extern void __init bdev_cache_init(void); extern void __init bdev_cache_init(void);
#define sb_is_blkdev_sb(sb) ((sb) == blockdev_superblock) #define sb_is_blkdev_sb(sb) ((sb) == blockdev_superblock)
#else
static inline void bdev_cache_init(void) {}
#define sb_is_blkdev_sb(sb) 0
#endif
/* /*
* char_dev.c * char_dev.c

Some files were not shown because too many files have changed in this diff Show More