kernel_optimize_test/drivers/message/i2o
David Howells 9361401eb7 [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>
2006-09-30 20:52:31 +02:00
..
bus-osm.c [PATCH] I2O: Beautifying 2006-01-06 08:33:54 -08:00
config-osm.c [PATCH] I2O: Optimizing 2006-01-06 08:33:54 -08:00
core.h [PATCH] proper prototype for drivers/message/i2o/device.c:i2o_parm_issue() 2006-07-10 13:24:26 -07:00
debug.c Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
device.c [PATCH] I2O: Lindent run 2006-01-06 08:33:54 -08:00
driver.c [PATCH] I2O: Optimizing 2006-01-06 08:33:54 -08:00
exec-osm.c [PATCH] I2O: Bugfixes to get I2O working again 2006-06-10 11:02:05 -07:00
i2o_block.c [PATCH] Split struct request ->flags into two parts 2006-09-30 20:23:37 +02:00
i2o_block.h [PATCH] I2O: Lindent run and replacement of printk through osm printing functions 2005-06-24 00:05:29 -07:00
i2o_config.c [PATCH] proper prototype for drivers/message/i2o/device.c:i2o_parm_issue() 2006-07-10 13:24:26 -07:00
i2o_lan.h [PATCH] I2O: Lindent run 2006-01-06 08:33:54 -08:00
i2o_proc.c [PATCH] mark f_ops const in the inode 2006-03-28 09:16:05 -08:00
i2o_scsi.c [SCSI] remove scsi_request infrastructure 2006-06-10 16:24:40 -05:00
iop.c Merge master.kernel.org:/pub/scm/linux/kernel/git/gregkh/pci-2.6 2006-06-29 10:49:17 -07:00
Kconfig [PATCH] BLOCK: Make it possible to disable the block layer [try #6] 2006-09-30 20:52:31 +02:00
Makefile [PATCH] I2O: new sysfs attributes and Adaptec specific block device access and 64-bit DMA support 2005-06-24 00:05:28 -07:00
pci.c [PATCH] irq-flags: misc drivers: Use the new IRQF_ constants 2006-07-02 13:58:50 -07:00
README
README.ioctl spelling: s/retreive/retrieve/ 2006-01-10 00:10:13 +01:00

	Linux I2O Support	(c) Copyright 1999 Red Hat Software
					and others.

	This program is free software; you can redistribute it and/or
	modify it under the terms of the GNU General Public License
	as published by the Free Software Foundation; either version
	2 of the License, or (at your option) any later version.

AUTHORS (so far)

Alan Cox, Building Number Three Ltd.
	Core code, SCSI and Block OSMs

Steve Ralston, LSI Logic Corp.
	Debugging SCSI and Block OSM

Deepak Saxena, Intel Corp.
	Various core/block extensions
	/proc interface, bug fixes
	Ioctl interfaces for control
	Debugging LAN OSM

Philip Rumpf
	Fixed assorted dumb SMP locking bugs

Juha Sievanen, University of Helsinki Finland
	LAN OSM code
	/proc interface to LAN class
	Bug fixes
	Core code extensions

Auvo Häkkinen, University of Helsinki Finland
	LAN OSM code
	/Proc interface to LAN class
	Bug fixes
	Core code extensions

Taneli Vähäkangas, University of Helsinki Finland
	Fixes to i2o_config

CREDITS

	This work was made possible by 

Red Hat Software
	Funding for the Building #3 part of the project

Symbios Logic (Now LSI)
	Host adapters, hints, known to work platforms when I hit
	compatibility problems

BoxHill Corporation
	Loan of initial FibreChannel disk array used for development work.

European Comission
	Funding the work done by the University of Helsinki

SysKonnect
        Loan of FDDI and Gigabit Ethernet cards

ASUSTeK
        Loan of I2O motherboard 

STATUS:

o	The core setup works within limits.
o	The scsi layer seems to almost work. 
           I'm still chasing down the hang bug.
o	The block OSM is mostly functional
o	LAN OSM works with FDDI and Ethernet cards.

TO DO:

General:
o	Provide hidden address space if asked
o	Long term message flow control
o	PCI IOP's without interrupts are not supported yet
o	Push FAIL handling into the core
o	DDM control interfaces for module load etc
o       Add I2O 2.0 support (Deffered to 2.5 kernel)

Block:
o	Multiple major numbers
o	Read ahead and cache handling stuff. Talk to Ingo and people
o	Power management
o	Finish Media changers

SCSI:
o	Find the right way to associate drives/luns/busses

Lan:	
o	Performance tuning
o	Test Fibre Channel code

Tape:
o	Anyone seen anything implementing this ?
           (D.S: Will attempt to do so if spare cycles permit)