mirror of
https://github.com/armbian/linux-cix.git
synced 2026-01-06 12:30:45 -08:00
[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:
committed by
Jens Axboe
parent
d366e40a1c
commit
9361401eb7
@@ -1,6 +1,24 @@
|
||||
#
|
||||
# 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
|
||||
#for instance.
|
||||
config LBD
|
||||
@@ -33,4 +51,6 @@ config LSF
|
||||
|
||||
If unsure, say Y.
|
||||
|
||||
endif
|
||||
|
||||
source block/Kconfig.iosched
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
if BLOCK
|
||||
|
||||
menu "IO Schedulers"
|
||||
|
||||
@@ -67,3 +68,5 @@ config DEFAULT_IOSCHED
|
||||
default "noop" if DEFAULT_NOOP
|
||||
|
||||
endmenu
|
||||
|
||||
endif
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
# 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_AS) += as-iosched.o
|
||||
|
||||
@@ -2,6 +2,8 @@
|
||||
# Block device driver configuration
|
||||
#
|
||||
|
||||
if BLOCK
|
||||
|
||||
menu "Block devices"
|
||||
|
||||
config BLK_DEV_FD
|
||||
@@ -468,3 +470,5 @@ config ATA_OVER_ETH
|
||||
devices like the Coraid EtherDrive (R) Storage Blade.
|
||||
|
||||
endmenu
|
||||
|
||||
endif
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
#
|
||||
|
||||
menu "Old CD-ROM drivers (not SCSI, not IDE)"
|
||||
depends on ISA
|
||||
depends on ISA && BLOCK
|
||||
|
||||
config CD_NO_IDESCSI
|
||||
bool "Support non-SCSI/IDE/ATAPI CDROM drives"
|
||||
|
||||
@@ -1006,6 +1006,7 @@ config GPIO_VR41XX
|
||||
|
||||
config RAW_DRIVER
|
||||
tristate "RAW driver (/dev/raw/rawN) (OBSOLETE)"
|
||||
depends on BLOCK
|
||||
help
|
||||
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.
|
||||
|
||||
@@ -655,6 +655,7 @@ void add_interrupt_randomness(int irq)
|
||||
add_timer_randomness(irq_timer_state[irq], 0x100 + irq);
|
||||
}
|
||||
|
||||
#ifdef CONFIG_BLOCK
|
||||
void add_disk_randomness(struct gendisk *disk)
|
||||
{
|
||||
if (!disk || !disk->random)
|
||||
@@ -667,6 +668,7 @@ void add_disk_randomness(struct gendisk *disk)
|
||||
}
|
||||
|
||||
EXPORT_SYMBOL(add_disk_randomness);
|
||||
#endif
|
||||
|
||||
#define EXTRACT_SIZE 10
|
||||
|
||||
@@ -918,6 +920,7 @@ void rand_initialize_irq(int irq)
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef CONFIG_BLOCK
|
||||
void rand_initialize_disk(struct gendisk *disk)
|
||||
{
|
||||
struct timer_rand_state *state;
|
||||
@@ -932,6 +935,7 @@ void rand_initialize_disk(struct gendisk *disk)
|
||||
disk->random = state;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
static ssize_t
|
||||
random_read(struct file * file, char __user * buf, size_t nbytes, loff_t *ppos)
|
||||
|
||||
@@ -4,6 +4,8 @@
|
||||
# Andre Hedrick <andre@linux-ide.org>
|
||||
#
|
||||
|
||||
if BLOCK
|
||||
|
||||
menu "ATA/ATAPI/MFM/RLL support"
|
||||
|
||||
config IDE
|
||||
@@ -1082,3 +1084,5 @@ config BLK_DEV_HD
|
||||
endif
|
||||
|
||||
endmenu
|
||||
|
||||
endif
|
||||
|
||||
@@ -2,6 +2,8 @@
|
||||
# Block device driver configuration
|
||||
#
|
||||
|
||||
if BLOCK
|
||||
|
||||
menu "Multi-device support (RAID and LVM)"
|
||||
|
||||
config MD
|
||||
@@ -251,3 +253,4 @@ config DM_MULTIPATH_EMC
|
||||
|
||||
endmenu
|
||||
|
||||
endif
|
||||
|
||||
@@ -88,7 +88,7 @@ config I2O_BUS
|
||||
|
||||
config I2O_BLOCK
|
||||
tristate "I2O Block OSM"
|
||||
depends on I2O
|
||||
depends on I2O && BLOCK
|
||||
---help---
|
||||
Include support for the I2O Block OSM. The Block OSM presents disk
|
||||
and other structured block devices to the operating system. If you
|
||||
|
||||
@@ -21,7 +21,7 @@ config MMC_DEBUG
|
||||
|
||||
config MMC_BLOCK
|
||||
tristate "MMC block device driver"
|
||||
depends on MMC
|
||||
depends on MMC && BLOCK
|
||||
default y
|
||||
help
|
||||
Say Y here to enable the MMC block device driver support.
|
||||
|
||||
@@ -24,7 +24,8 @@ obj-$(CONFIG_MMC_AU1X) += au1xmmc.o
|
||||
obj-$(CONFIG_MMC_OMAP) += omap.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)
|
||||
EXTRA_CFLAGS += -DDEBUG
|
||||
|
||||
@@ -166,7 +166,7 @@ config MTD_CHAR
|
||||
|
||||
config MTD_BLOCK
|
||||
tristate "Caching block device access to MTD devices"
|
||||
depends on MTD
|
||||
depends on MTD && BLOCK
|
||||
---help---
|
||||
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
|
||||
@@ -188,7 +188,7 @@ config MTD_BLOCK
|
||||
|
||||
config MTD_BLOCK_RO
|
||||
tristate "Readonly block device access to MTD devices"
|
||||
depends on MTD_BLOCK!=y && MTD
|
||||
depends on MTD_BLOCK!=y && MTD && BLOCK
|
||||
help
|
||||
This allows you to mount read-only file systems (such as cramfs)
|
||||
from an MTD device, without the overhead (and danger) of the caching
|
||||
@@ -199,7 +199,7 @@ config MTD_BLOCK_RO
|
||||
|
||||
config FTL
|
||||
tristate "FTL (Flash Translation Layer) support"
|
||||
depends on MTD
|
||||
depends on MTD && BLOCK
|
||||
---help---
|
||||
This provides support for the original Flash Translation Layer which
|
||||
is part of the PCMCIA specification. It uses a kind of pseudo-
|
||||
@@ -215,7 +215,7 @@ config FTL
|
||||
|
||||
config NFTL
|
||||
tristate "NFTL (NAND Flash Translation Layer) support"
|
||||
depends on MTD
|
||||
depends on MTD && BLOCK
|
||||
---help---
|
||||
This provides support for the NAND Flash Translation Layer which is
|
||||
used on M-Systems' DiskOnChip devices. It uses a kind of pseudo-
|
||||
@@ -238,7 +238,7 @@ config NFTL_RW
|
||||
|
||||
config INFTL
|
||||
tristate "INFTL (Inverse NAND Flash Translation Layer) support"
|
||||
depends on MTD
|
||||
depends on MTD && BLOCK
|
||||
---help---
|
||||
This provides support for the Inverse NAND Flash Translation
|
||||
Layer which is used on M-Systems' newer DiskOnChip devices. It
|
||||
@@ -255,7 +255,7 @@ config INFTL
|
||||
|
||||
config RFD_FTL
|
||||
tristate "Resident Flash Disk (Flash Translation Layer) support"
|
||||
depends on MTD
|
||||
depends on MTD && BLOCK
|
||||
---help---
|
||||
This provides support for the flash translation layer known
|
||||
as the Resident Flash Disk (RFD), as used by the Embedded BIOS
|
||||
|
||||
@@ -136,7 +136,7 @@ config MTDRAM_ABS_POS
|
||||
|
||||
config MTD_BLOCK2MTD
|
||||
tristate "MTD using block device"
|
||||
depends on MTD
|
||||
depends on MTD && BLOCK
|
||||
help
|
||||
This driver allows a block device to appear as an MTD. It would
|
||||
generally be used in the following cases:
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
if S390
|
||||
if S390 && BLOCK
|
||||
|
||||
comment "S/390 block device drivers"
|
||||
depends on S390
|
||||
|
||||
@@ -3,11 +3,13 @@ menu "SCSI device support"
|
||||
config RAID_ATTRS
|
||||
tristate "RAID Transport Class"
|
||||
default n
|
||||
depends on BLOCK
|
||||
---help---
|
||||
Provides RAID
|
||||
|
||||
config SCSI
|
||||
tristate "SCSI device support"
|
||||
depends on BLOCK
|
||||
---help---
|
||||
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
|
||||
|
||||
31
fs/Kconfig
31
fs/Kconfig
@@ -4,6 +4,8 @@
|
||||
|
||||
menu "File systems"
|
||||
|
||||
if BLOCK
|
||||
|
||||
config EXT2_FS
|
||||
tristate "Second extended fs support"
|
||||
help
|
||||
@@ -399,6 +401,8 @@ config ROMFS_FS
|
||||
If you don't know whether you need it, then you don't need it:
|
||||
answer N.
|
||||
|
||||
endif
|
||||
|
||||
config INOTIFY
|
||||
bool "Inotify file change notification support"
|
||||
default y
|
||||
@@ -530,6 +534,7 @@ config FUSE_FS
|
||||
If you want to develop a userspace FS, or if you want to use
|
||||
a filesystem based on FUSE, answer Y or M.
|
||||
|
||||
if BLOCK
|
||||
menu "CD-ROM/DVD Filesystems"
|
||||
|
||||
config ISO9660_FS
|
||||
@@ -597,7 +602,9 @@ config UDF_NLS
|
||||
depends on (UDF_FS=m && NLS) || (UDF_FS=y && NLS=y)
|
||||
|
||||
endmenu
|
||||
endif
|
||||
|
||||
if BLOCK
|
||||
menu "DOS/FAT/NT Filesystems"
|
||||
|
||||
config FAT_FS
|
||||
@@ -782,6 +789,7 @@ config NTFS_RW
|
||||
It is perfectly safe to say N here.
|
||||
|
||||
endmenu
|
||||
endif
|
||||
|
||||
menu "Pseudo filesystems"
|
||||
|
||||
@@ -939,7 +947,7 @@ menu "Miscellaneous filesystems"
|
||||
|
||||
config ADFS_FS
|
||||
tristate "ADFS file system support (EXPERIMENTAL)"
|
||||
depends on EXPERIMENTAL
|
||||
depends on BLOCK && EXPERIMENTAL
|
||||
help
|
||||
The Acorn Disc Filing System is the standard file system of the
|
||||
RiscOS operating system which runs on Acorn's ARM-based Risc PC
|
||||
@@ -967,7 +975,7 @@ config ADFS_FS_RW
|
||||
|
||||
config AFFS_FS
|
||||
tristate "Amiga FFS file system support (EXPERIMENTAL)"
|
||||
depends on EXPERIMENTAL
|
||||
depends on BLOCK && EXPERIMENTAL
|
||||
help
|
||||
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
|
||||
@@ -989,7 +997,7 @@ config AFFS_FS
|
||||
|
||||
config HFS_FS
|
||||
tristate "Apple Macintosh file system support (EXPERIMENTAL)"
|
||||
depends on EXPERIMENTAL
|
||||
depends on BLOCK && EXPERIMENTAL
|
||||
select NLS
|
||||
help
|
||||
If you say Y here, you will be able to mount Macintosh-formatted
|
||||
@@ -1002,6 +1010,7 @@ config HFS_FS
|
||||
|
||||
config HFSPLUS_FS
|
||||
tristate "Apple Extended HFS file system support"
|
||||
depends on BLOCK
|
||||
select NLS
|
||||
select NLS_UTF8
|
||||
help
|
||||
@@ -1015,7 +1024,7 @@ config HFSPLUS_FS
|
||||
|
||||
config BEFS_FS
|
||||
tristate "BeOS file system (BeFS) support (read only) (EXPERIMENTAL)"
|
||||
depends on EXPERIMENTAL
|
||||
depends on BLOCK && EXPERIMENTAL
|
||||
select NLS
|
||||
help
|
||||
The BeOS File System (BeFS) is the native file system of Be, Inc's
|
||||
@@ -1042,7 +1051,7 @@ config BEFS_DEBUG
|
||||
|
||||
config BFS_FS
|
||||
tristate "BFS file system support (EXPERIMENTAL)"
|
||||
depends on EXPERIMENTAL
|
||||
depends on BLOCK && EXPERIMENTAL
|
||||
help
|
||||
Boot File System (BFS) is a file system used under SCO UnixWare to
|
||||
allow the bootloader access to the kernel image and other important
|
||||
@@ -1064,7 +1073,7 @@ config BFS_FS
|
||||
|
||||
config EFS_FS
|
||||
tristate "EFS file system support (read only) (EXPERIMENTAL)"
|
||||
depends on EXPERIMENTAL
|
||||
depends on BLOCK && EXPERIMENTAL
|
||||
help
|
||||
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
|
||||
@@ -1079,7 +1088,7 @@ config EFS_FS
|
||||
|
||||
config JFFS_FS
|
||||
tristate "Journalling Flash File System (JFFS) support"
|
||||
depends on MTD
|
||||
depends on MTD && BLOCK
|
||||
help
|
||||
JFFS is the Journaling Flash File System developed by Axis
|
||||
Communications in Sweden, aimed at providing a crash/powerdown-safe
|
||||
@@ -1264,6 +1273,7 @@ endchoice
|
||||
|
||||
config CRAMFS
|
||||
tristate "Compressed ROM file system support (cramfs)"
|
||||
depends on BLOCK
|
||||
select ZLIB_INFLATE
|
||||
help
|
||||
Saying Y here includes support for CramFs (Compressed ROM File
|
||||
@@ -1283,6 +1293,7 @@ config CRAMFS
|
||||
|
||||
config VXFS_FS
|
||||
tristate "FreeVxFS file system support (VERITAS VxFS(TM) compatible)"
|
||||
depends on BLOCK
|
||||
help
|
||||
FreeVxFS is a file system driver that support the VERITAS VxFS(TM)
|
||||
file system format. VERITAS VxFS(TM) is the standard file system
|
||||
@@ -1300,6 +1311,7 @@ config VXFS_FS
|
||||
|
||||
config HPFS_FS
|
||||
tristate "OS/2 HPFS file system support"
|
||||
depends on BLOCK
|
||||
help
|
||||
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
|
||||
@@ -1316,6 +1328,7 @@ config HPFS_FS
|
||||
|
||||
config QNX4FS_FS
|
||||
tristate "QNX4 file system support (read only)"
|
||||
depends on BLOCK
|
||||
help
|
||||
This is the file system used by the real-time operating systems
|
||||
QNX 4 and QNX 6 (the latter is also called QNX RTP).
|
||||
@@ -1343,6 +1356,7 @@ config QNX4FS_RW
|
||||
|
||||
config SYSV_FS
|
||||
tristate "System V/Xenix/V7/Coherent file system support"
|
||||
depends on BLOCK
|
||||
help
|
||||
SCO, Xenix and Coherent are commercial Unix systems for Intel
|
||||
machines, and Version 7 was used on the DEC PDP-11. Saying Y
|
||||
@@ -1381,6 +1395,7 @@ config SYSV_FS
|
||||
|
||||
config UFS_FS
|
||||
tristate "UFS file system support (read only)"
|
||||
depends on BLOCK
|
||||
help
|
||||
BSD and derivate versions of Unix (such as SunOS, FreeBSD, NetBSD,
|
||||
OpenBSD and NeXTstep) use a file system called UFS. Some System V
|
||||
@@ -1959,11 +1974,13 @@ config GENERIC_ACL
|
||||
|
||||
endmenu
|
||||
|
||||
if BLOCK
|
||||
menu "Partition Types"
|
||||
|
||||
source "fs/partitions/Kconfig"
|
||||
|
||||
endmenu
|
||||
endif
|
||||
|
||||
source "fs/nls/Kconfig"
|
||||
|
||||
|
||||
14
fs/Makefile
14
fs/Makefile
@@ -5,12 +5,18 @@
|
||||
# Rewritten to use lists instead of if-statements.
|
||||
#
|
||||
|
||||
obj-y := open.o read_write.o file_table.o buffer.o bio.o super.o \
|
||||
block_dev.o char_dev.o stat.o exec.o pipe.o namei.o fcntl.o \
|
||||
obj-y := open.o read_write.o file_table.o super.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 \
|
||||
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 \
|
||||
ioprio.o pnode.o drop_caches.o splice.o sync.o
|
||||
seq_file.o xattr.o libfs.o fs-writeback.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_USER) += inotify_user.o
|
||||
|
||||
@@ -645,6 +645,7 @@ out:
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_BLOCK
|
||||
struct hd_geometry32 {
|
||||
unsigned char heads;
|
||||
unsigned char sectors;
|
||||
@@ -869,6 +870,7 @@ static int sg_grt_trans(unsigned int fd, unsigned int cmd, unsigned long arg)
|
||||
}
|
||||
return err;
|
||||
}
|
||||
#endif /* CONFIG_BLOCK */
|
||||
|
||||
struct sock_fprog32 {
|
||||
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 {
|
||||
compat_long_t mt_type;
|
||||
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;
|
||||
}
|
||||
#endif /* CONFIG_BLOCK */
|
||||
|
||||
#ifdef CONFIG_VT
|
||||
|
||||
@@ -1491,6 +1495,7 @@ ret_einval(unsigned int fd, unsigned int cmd, unsigned long arg)
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_BLOCK
|
||||
static int broken_blkgetsize(unsigned int fd, unsigned int cmd, unsigned long arg)
|
||||
{
|
||||
/* 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);
|
||||
}
|
||||
#endif
|
||||
|
||||
static int ioc_settimeout(unsigned int fd, unsigned int cmd, unsigned long arg)
|
||||
{
|
||||
return rw_long(fd, AUTOFS_IOC_SETTIMEOUT, arg);
|
||||
}
|
||||
|
||||
#ifdef CONFIG_BLOCK
|
||||
/* Fix sizeof(sizeof()) breakage */
|
||||
#define BLKBSZGET_32 _IOR(0x12,112,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));
|
||||
}
|
||||
#endif
|
||||
|
||||
/* Bluetooth ioctls */
|
||||
#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 HIDPGETCONNINFO _IOR('H', 211, int)
|
||||
|
||||
#ifdef CONFIG_BLOCK
|
||||
struct floppy_struct32 {
|
||||
compat_uint_t size;
|
||||
compat_uint_t sect;
|
||||
@@ -1895,6 +1904,7 @@ out:
|
||||
kfree(karg);
|
||||
return err;
|
||||
}
|
||||
#endif
|
||||
|
||||
struct mtd_oob_buf32 {
|
||||
u_int32_t start;
|
||||
@@ -1936,6 +1946,7 @@ static int mtd_rw_oob(unsigned int fd, unsigned int cmd, unsigned long arg)
|
||||
return err;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_BLOCK
|
||||
struct raw32_config_request
|
||||
{
|
||||
compat_int_t raw_minor;
|
||||
@@ -2000,6 +2011,7 @@ static int raw_ioctl(unsigned fd, unsigned cmd, unsigned long arg)
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
#endif /* CONFIG_BLOCK */
|
||||
|
||||
struct serial_struct32 {
|
||||
compat_int_t type;
|
||||
@@ -2606,6 +2618,7 @@ HANDLE_IOCTL(SIOCBRDELIF, dev_ifsioc)
|
||||
HANDLE_IOCTL(SIOCRTMSG, ret_einval)
|
||||
HANDLE_IOCTL(SIOCGSTAMP, do_siocgstamp)
|
||||
#endif
|
||||
#ifdef CONFIG_BLOCK
|
||||
HANDLE_IOCTL(HDIO_GETGEO, hdio_getgeo)
|
||||
HANDLE_IOCTL(BLKRAGET, 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(SG_IO,sg_ioctl_trans)
|
||||
HANDLE_IOCTL(SG_GET_REQUEST_TABLE, sg_grt_trans)
|
||||
#endif
|
||||
HANDLE_IOCTL(PPPIOCGIDLE32, ppp_ioctl_trans)
|
||||
HANDLE_IOCTL(PPPIOCSCOMPRESS32, ppp_ioctl_trans)
|
||||
HANDLE_IOCTL(PPPIOCSPASS32, ppp_sock_fprog_ioctl_trans)
|
||||
HANDLE_IOCTL(PPPIOCSACTIVE32, ppp_sock_fprog_ioctl_trans)
|
||||
#ifdef CONFIG_BLOCK
|
||||
HANDLE_IOCTL(MTIOCGET32, mt_ioctl_trans)
|
||||
HANDLE_IOCTL(MTIOCPOS32, mt_ioctl_trans)
|
||||
HANDLE_IOCTL(CDROMREADAUDIO, cdrom_ioctl_trans)
|
||||
HANDLE_IOCTL(CDROM_SEND_PACKET, cdrom_ioctl_trans)
|
||||
#endif
|
||||
#define AUTOFS_IOC_SETTIMEOUT32 _IOWR(0x93,0x64,unsigned int)
|
||||
HANDLE_IOCTL(AUTOFS_IOC_SETTIMEOUT32, ioc_settimeout)
|
||||
#ifdef CONFIG_VT
|
||||
@@ -2677,12 +2693,14 @@ HANDLE_IOCTL(SONET_SETFRAMING, do_atm_ioctl)
|
||||
HANDLE_IOCTL(SONET_GETFRAMING, do_atm_ioctl)
|
||||
HANDLE_IOCTL(SONET_GETFRSENSE, do_atm_ioctl)
|
||||
/* block stuff */
|
||||
#ifdef CONFIG_BLOCK
|
||||
HANDLE_IOCTL(BLKBSZGET_32, do_blkbszget)
|
||||
HANDLE_IOCTL(BLKBSZSET_32, do_blkbszset)
|
||||
HANDLE_IOCTL(BLKGETSIZE64_32, do_blkgetsize64)
|
||||
/* Raw devices */
|
||||
HANDLE_IOCTL(RAW_SETBIND, raw_ioctl)
|
||||
HANDLE_IOCTL(RAW_GETBIND, raw_ioctl)
|
||||
#endif
|
||||
/* Serial */
|
||||
HANDLE_IOCTL(TIOCGSERIAL, serial_struct_ioctl)
|
||||
HANDLE_IOCTL(TIOCSSERIAL, serial_struct_ioctl)
|
||||
|
||||
@@ -14,10 +14,16 @@
|
||||
/*
|
||||
* block_dev.c
|
||||
*/
|
||||
#ifdef CONFIG_BLOCK
|
||||
extern struct super_block *blockdev_superblock;
|
||||
extern void __init bdev_cache_init(void);
|
||||
|
||||
#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
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user