* Re: [PATCH 17/17] BLOCK: Make it possible to disable the block layer [try #2] [not found] ` <6PwAr-6jv-5@gated-at.bofh.it> @ 2006-08-30 13:23 ` Bodo Eggert 0 siblings, 0 replies; 48+ messages in thread From: Bodo Eggert @ 2006-08-30 13:23 UTC (permalink / raw) To: Stefan Richter, Roman Zippel, Christoph Hellwig, David Howells, linux-fsdevel, linux-kernel Stefan Richter <stefanr@s5r6.in-berlin.de> wrote: > "select" would not be needed if the configurator wouldn't make an option > _invisible_ if it depends on another disabled option. It would be nice > if the option would stay visible (or better yet, would be optionally > visible) and had pointers to unfulfilled dependencies. > > Or more generally spoken, "select" would not be needed if there were > other means to switch the configurator's UI to a layout that exposes > more details about dependencies. There is already such a UI mode which > fully exposes _fulfilled_ dependencies. The "options with pointers to (unfullfilled) dependencies" that should be visible are (or should be) exactly the options now using select. In other words, only make fooconfig needs to be enheanced. -- Ich danke GMX dafür, die Verwendung meiner Adressen mittels per SPF verbreiteten Lügen zu sabotieren. http://david.woodhou.se/why-not-spf.html ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: [PATCH 17/17] BLOCK: Make it possible to disable the block layer [try #2] @ 2006-08-30 13:23 ` Bodo Eggert 0 siblings, 0 replies; 48+ messages in thread From: Bodo Eggert @ 2006-08-30 13:23 UTC (permalink / raw) To: Stefan Richter, Roman Zippel, Christoph Hellwig, David Howells, linux-fsdevel, linux-kernel Stefan Richter <stefanr@s5r6.in-berlin.de> wrote: > "select" would not be needed if the configurator wouldn't make an option > _invisible_ if it depends on another disabled option. It would be nice > if the option would stay visible (or better yet, would be optionally > visible) and had pointers to unfulfilled dependencies. > > Or more generally spoken, "select" would not be needed if there were > other means to switch the configurator's UI to a layout that exposes > more details about dependencies. There is already such a UI mode which > fully exposes _fulfilled_ dependencies. The "options with pointers to (unfullfilled) dependencies" that should be visible are (or should be) exactly the options now using select. In other words, only make fooconfig needs to be enheanced. -- Ich danke GMX dafür, die Verwendung meiner Adressen mittels per SPF verbreiteten Lügen zu sabotieren. http://david.woodhou.se/why-not-spf.html - To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 48+ messages in thread
* [PATCH 01/17] BLOCK: Move functions out of buffer code [try #2] @ 2006-08-24 21:32 David Howells 2006-08-24 21:33 ` [PATCH 17/17] BLOCK: Make it possible to disable the block layer " David Howells 0 siblings, 1 reply; 48+ messages in thread From: David Howells @ 2006-08-24 21:32 UTC (permalink / raw) To: linux-fsdevel, linux-kernel; +Cc: dhowells From: David Howells <dhowells@redhat.com> Move some functions out of the buffering code that aren't strictly buffering specific. This is a precursor to being able to disable the block layer. (*) Moved some stuff out of fs/buffer.c: (*) The file sync and general sync stuff moved to fs/sync.c. (*) The superblock sync stuff moved to fs/super.c. (*) do_invalidatepage() moved to mm/truncate.c. (*) try_to_release_page() moved to mm/filemap.c. (*) Moved some related declarations between header files: (*) declarations for do_invalidatepage() and try_to_release_page() moved to linux/mm.h. (*) __set_page_dirty_buffers() moved to linux/buffer_head.h. Signed-Off-By: David Howells <dhowells@redhat.com> --- fs/buffer.c | 174 ------------------------------------------- fs/super.c | 31 ++++++++ fs/sync.c | 113 ++++++++++++++++++++++++++++ include/linux/buffer_head.h | 3 - include/linux/fs.h | 1 include/linux/mm.h | 4 + mm/filemap.c | 30 +++++++ mm/page-writeback.c | 1 mm/truncate.c | 26 ++++++ 9 files changed, 206 insertions(+), 177 deletions(-) diff --git a/fs/buffer.c b/fs/buffer.c index 71649ef..314b9c4 100644 --- a/fs/buffer.c +++ b/fs/buffer.c @@ -159,31 +159,6 @@ int sync_blockdev(struct block_device *b } EXPORT_SYMBOL(sync_blockdev); -static void __fsync_super(struct super_block *sb) -{ - sync_inodes_sb(sb, 0); - DQUOT_SYNC(sb); - lock_super(sb); - if (sb->s_dirt && sb->s_op->write_super) - sb->s_op->write_super(sb); - unlock_super(sb); - if (sb->s_op->sync_fs) - sb->s_op->sync_fs(sb, 1); - sync_blockdev(sb->s_bdev); - sync_inodes_sb(sb, 1); -} - -/* - * Write out and wait upon all dirty data associated with this - * superblock. Filesystem data as well as the underlying block - * device. Takes the superblock lock. - */ -int fsync_super(struct super_block *sb) -{ - __fsync_super(sb); - return sync_blockdev(sb->s_bdev); -} - /* * Write out and wait upon all dirty data associated with this * device. Filesystem data as well as the underlying block @@ -260,118 +235,6 @@ void thaw_bdev(struct block_device *bdev EXPORT_SYMBOL(thaw_bdev); /* - * sync everything. Start out by waking pdflush, because that writes back - * all queues in parallel. - */ -static void do_sync(unsigned long wait) -{ - wakeup_pdflush(0); - sync_inodes(0); /* All mappings, inodes and their blockdevs */ - DQUOT_SYNC(NULL); - sync_supers(); /* Write the superblocks */ - sync_filesystems(0); /* Start syncing the filesystems */ - sync_filesystems(wait); /* Waitingly sync the filesystems */ - sync_inodes(wait); /* Mappings, inodes and blockdevs, again. */ - if (!wait) - printk("Emergency Sync complete\n"); - if (unlikely(laptop_mode)) - laptop_sync_completion(); -} - -asmlinkage long sys_sync(void) -{ - do_sync(1); - return 0; -} - -void emergency_sync(void) -{ - pdflush_operation(do_sync, 0); -} - -/* - * Generic function to fsync a file. - * - * filp may be NULL if called via the msync of a vma. - */ - -int file_fsync(struct file *filp, struct dentry *dentry, int datasync) -{ - struct inode * inode = dentry->d_inode; - struct super_block * sb; - int ret, err; - - /* sync the inode to buffers */ - ret = write_inode_now(inode, 0); - - /* sync the superblock to buffers */ - sb = inode->i_sb; - lock_super(sb); - if (sb->s_op->write_super) - sb->s_op->write_super(sb); - unlock_super(sb); - - /* .. finally sync the buffers to disk */ - err = sync_blockdev(sb->s_bdev); - if (!ret) - ret = err; - return ret; -} - -long do_fsync(struct file *file, int datasync) -{ - int ret; - int err; - struct address_space *mapping = file->f_mapping; - - if (!file->f_op || !file->f_op->fsync) { - /* Why? We can still call filemap_fdatawrite */ - ret = -EINVAL; - goto out; - } - - ret = filemap_fdatawrite(mapping); - - /* - * We need to protect against concurrent writers, which could cause - * livelocks in fsync_buffers_list(). - */ - mutex_lock(&mapping->host->i_mutex); - err = file->f_op->fsync(file, file->f_dentry, datasync); - if (!ret) - ret = err; - mutex_unlock(&mapping->host->i_mutex); - err = filemap_fdatawait(mapping); - if (!ret) - ret = err; -out: - return ret; -} - -static long __do_fsync(unsigned int fd, int datasync) -{ - struct file *file; - int ret = -EBADF; - - file = fget(fd); - if (file) { - ret = do_fsync(file, datasync); - fput(file); - } - return ret; -} - -asmlinkage long sys_fsync(unsigned int fd) -{ - return __do_fsync(fd, 0); -} - -asmlinkage long sys_fdatasync(unsigned int fd) -{ - return __do_fsync(fd, 1); -} - -/* * Various filesystems appear to want __find_get_block to be non-blocking. * But it's the page lock which protects the buffers. To get around this, * we get exclusion from try_to_free_buffers with the blockdev mapping's @@ -1551,35 +1414,6 @@ static void discard_buffer(struct buffer } /** - * try_to_release_page() - release old fs-specific metadata on a page - * - * @page: the page which the kernel is trying to free - * @gfp_mask: memory allocation flags (and I/O mode) - * - * The address_space is to try to release any data against the page - * (presumably at page->private). If the release was successful, return `1'. - * Otherwise return zero. - * - * The @gfp_mask argument specifies whether I/O may be performed to release - * this page (__GFP_IO), and whether the call may block (__GFP_WAIT). - * - * NOTE: @gfp_mask may go away, and this function may become non-blocking. - */ -int try_to_release_page(struct page *page, gfp_t gfp_mask) -{ - struct address_space * const mapping = page->mapping; - - BUG_ON(!PageLocked(page)); - if (PageWriteback(page)) - return 0; - - if (mapping && mapping->a_ops->releasepage) - return mapping->a_ops->releasepage(page, gfp_mask); - return try_to_free_buffers(page); -} -EXPORT_SYMBOL(try_to_release_page); - -/** * block_invalidatepage - invalidate part of all of a buffer-backed page * * @page: the page which is affected @@ -1630,14 +1464,6 @@ out: } EXPORT_SYMBOL(block_invalidatepage); -void do_invalidatepage(struct page *page, unsigned long offset) -{ - void (*invalidatepage)(struct page *, unsigned long); - invalidatepage = page->mapping->a_ops->invalidatepage ? : - block_invalidatepage; - (*invalidatepage)(page, offset); -} - /* * We attach and possibly dirty the buffers atomically wrt * __set_page_dirty_buffers() via private_lock. try_to_free_buffers diff --git a/fs/super.c b/fs/super.c index 6d4e817..22c2fd1 100644 --- a/fs/super.c +++ b/fs/super.c @@ -219,6 +219,37 @@ static int grab_super(struct super_block return 0; } +/* + * Write out and wait upon all dirty data associated with this + * superblock. Filesystem data as well as the underlying block + * device. Takes the superblock lock. Requires a second blkdev + * flush by the caller to complete the operation. + */ +void __fsync_super(struct super_block *sb) +{ + sync_inodes_sb(sb, 0); + DQUOT_SYNC(sb); + lock_super(sb); + if (sb->s_dirt && sb->s_op->write_super) + sb->s_op->write_super(sb); + unlock_super(sb); + if (sb->s_op->sync_fs) + sb->s_op->sync_fs(sb, 1); + sync_blockdev(sb->s_bdev); + sync_inodes_sb(sb, 1); +} + +/* + * Write out and wait upon all dirty data associated with this + * superblock. Filesystem data as well as the underlying block + * device. Takes the superblock lock. + */ +int fsync_super(struct super_block *sb) +{ + __fsync_super(sb); + return sync_blockdev(sb->s_bdev); +} + /** * generic_shutdown_super - common helper for ->kill_sb() * @sb: superblock to kill diff --git a/fs/sync.c b/fs/sync.c index 955aef0..1de747b 100644 --- a/fs/sync.c +++ b/fs/sync.c @@ -10,11 +10,124 @@ #include <linux/writeback.h> #include <linux/syscalls.h> #include <linux/linkage.h> #include <linux/pagemap.h> +#include <linux/quotaops.h> +#include <linux/buffer_head.h> #define VALID_FLAGS (SYNC_FILE_RANGE_WAIT_BEFORE|SYNC_FILE_RANGE_WRITE| \ SYNC_FILE_RANGE_WAIT_AFTER) /* + * sync everything. Start out by waking pdflush, because that writes back + * all queues in parallel. + */ +static void do_sync(unsigned long wait) +{ + wakeup_pdflush(0); + sync_inodes(0); /* All mappings, inodes and their blockdevs */ + DQUOT_SYNC(NULL); + sync_supers(); /* Write the superblocks */ + sync_filesystems(0); /* Start syncing the filesystems */ + sync_filesystems(wait); /* Waitingly sync the filesystems */ + sync_inodes(wait); /* Mappings, inodes and blockdevs, again. */ + if (!wait) + printk("Emergency Sync complete\n"); + if (unlikely(laptop_mode)) + laptop_sync_completion(); +} + +asmlinkage long sys_sync(void) +{ + do_sync(1); + return 0; +} + +void emergency_sync(void) +{ + pdflush_operation(do_sync, 0); +} + +/* + * Generic function to fsync a file. + * + * filp may be NULL if called via the msync of a vma. + */ +int file_fsync(struct file *filp, struct dentry *dentry, int datasync) +{ + struct inode * inode = dentry->d_inode; + struct super_block * sb; + int ret, err; + + /* sync the inode to buffers */ + ret = write_inode_now(inode, 0); + + /* sync the superblock to buffers */ + sb = inode->i_sb; + lock_super(sb); + if (sb->s_op->write_super) + sb->s_op->write_super(sb); + unlock_super(sb); + + /* .. finally sync the buffers to disk */ + err = sync_blockdev(sb->s_bdev); + if (!ret) + ret = err; + return ret; +} + +long do_fsync(struct file *file, int datasync) +{ + int ret; + int err; + struct address_space *mapping = file->f_mapping; + + if (!file->f_op || !file->f_op->fsync) { + /* Why? We can still call filemap_fdatawrite */ + ret = -EINVAL; + goto out; + } + + ret = filemap_fdatawrite(mapping); + + /* + * We need to protect against concurrent writers, which could cause + * livelocks in fsync_buffers_list(). + */ + mutex_lock(&mapping->host->i_mutex); + err = file->f_op->fsync(file, file->f_dentry, datasync); + if (!ret) + ret = err; + mutex_unlock(&mapping->host->i_mutex); + err = filemap_fdatawait(mapping); + if (!ret) + ret = err; +out: + return ret; +} + +static long __do_fsync(unsigned int fd, int datasync) +{ + struct file *file; + int ret = -EBADF; + + file = fget(fd); + if (file) { + ret = do_fsync(file, datasync); + fput(file); + } + return ret; +} + +asmlinkage long sys_fsync(unsigned int fd) +{ + return __do_fsync(fd, 0); +} + +asmlinkage long sys_fdatasync(unsigned int fd) +{ + return __do_fsync(fd, 1); +} + +/* * sys_sync_file_range() permits finely controlled syncing over a segment of * a file in the range offset .. (offset+nbytes-1) inclusive. If nbytes is * zero then sys_sync_file_range() will operate from offset out to EOF. diff --git a/include/linux/buffer_head.h b/include/linux/buffer_head.h index 737e407..64b508e 100644 --- a/include/linux/buffer_head.h +++ b/include/linux/buffer_head.h @@ -190,9 +190,7 @@ extern int buffer_heads_over_limit; * Generic address_space_operations implementations for buffer_head-backed * address_spaces. */ -int try_to_release_page(struct page * page, gfp_t gfp_mask); void block_invalidatepage(struct page *page, unsigned long offset); -void do_invalidatepage(struct page *page, unsigned long offset); int block_write_full_page(struct page *page, get_block_t *get_block, struct writeback_control *wbc); int block_read_full_page(struct page*, get_block_t*); @@ -302,4 +300,5 @@ static inline void lock_buffer(struct bu __lock_buffer(bh); } +extern int __set_page_dirty_buffers(struct page *page); #endif /* _LINUX_BUFFER_HEAD_H */ diff --git a/include/linux/fs.h b/include/linux/fs.h index 2561020..429bda5 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h @@ -1541,6 +1541,7 @@ extern int __filemap_fdatawrite_range(st extern long do_fsync(struct file *file, int datasync); extern void sync_supers(void); extern void sync_filesystems(int wait); +extern void __fsync_super(struct super_block *sb); extern void emergency_sync(void); extern void emergency_remount(void); extern int do_remount_sb(struct super_block *sb, int flags, diff --git a/include/linux/mm.h b/include/linux/mm.h index f0b135c..c3c25ef 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h @@ -767,7 +767,9 @@ int get_user_pages(struct task_struct *t int len, int write, int force, struct page **pages, struct vm_area_struct **vmas); void print_bad_pte(struct vm_area_struct *, pte_t, unsigned long); -int __set_page_dirty_buffers(struct page *page); +extern int try_to_release_page(struct page * page, gfp_t gfp_mask); +extern void do_invalidatepage(struct page *page, unsigned long offset); + int __set_page_dirty_nobuffers(struct page *page); int redirty_page_for_writepage(struct writeback_control *wbc, struct page *page); diff --git a/mm/filemap.c b/mm/filemap.c index b9a60c4..a5ea7e0 100644 --- a/mm/filemap.c +++ b/mm/filemap.c @@ -2474,3 +2474,33 @@ generic_file_direct_IO(int rw, struct ki } return retval; } + +/** + * try_to_release_page() - release old fs-specific metadata on a page + * + * @page: the page which the kernel is trying to free + * @gfp_mask: memory allocation flags (and I/O mode) + * + * The address_space is to try to release any data against the page + * (presumably at page->private). If the release was successful, return `1'. + * Otherwise return zero. + * + * The @gfp_mask argument specifies whether I/O may be performed to release + * this page (__GFP_IO), and whether the call may block (__GFP_WAIT). + * + * NOTE: @gfp_mask may go away, and this function may become non-blocking. + */ +int try_to_release_page(struct page *page, gfp_t gfp_mask) +{ + struct address_space * const mapping = page->mapping; + + BUG_ON(!PageLocked(page)); + if (PageWriteback(page)) + return 0; + + if (mapping && mapping->a_ops->releasepage) + return mapping->a_ops->releasepage(page, gfp_mask); + return try_to_free_buffers(page); +} + +EXPORT_SYMBOL(try_to_release_page); diff --git a/mm/page-writeback.c b/mm/page-writeback.c index e630188..f75d033 100644 --- a/mm/page-writeback.c +++ b/mm/page-writeback.c @@ -29,6 +29,7 @@ #include <linux/smp.h> #include <linux/sysctl.h> #include <linux/cpu.h> #include <linux/syscalls.h> +#include <linux/buffer_head.h> /* * The maximum number of pages to writeout in a single bdflush/kupdate diff --git a/mm/truncate.c b/mm/truncate.c index cf1b015..081437d 100644 --- a/mm/truncate.c +++ b/mm/truncate.c @@ -16,6 +16,32 @@ #include <linux/buffer_head.h> /* grr. t do_invalidatepage */ +/** + * do_invalidatepage - invalidate part of all of a page + * @page: the page which is affected + * @offset: the index of the truncation point + * + * do_invalidatepage() is called when all or part of the page has become + * invalidated by a truncate operation. + * + * do_invalidatepage() does not have to release all buffers, but it must + * ensure that no dirty buffer is left outside @offset and that no I/O + * is underway against any of the blocks which are outside the truncation + * point. Because the caller is about to free (and possibly reuse) those + * blocks on-disk. + */ +void do_invalidatepage(struct page *page, unsigned long offset) +{ + void (*invalidatepage)(struct page *, unsigned long); + invalidatepage = page->mapping->a_ops->invalidatepage; +#ifdef CONFIG_BLOCK + if (!invalidatepage) + invalidatepage = block_invalidatepage; +#endif + if (invalidatepage) + (*invalidatepage)(page, offset); +} + static inline void truncate_partial_page(struct page *page, unsigned partial) { memclear_highpage_flush(page, partial, PAGE_CACHE_SIZE-partial); ^ permalink raw reply related [flat|nested] 48+ messages in thread
* [PATCH 17/17] BLOCK: Make it possible to disable the block layer [try #2] 2006-08-24 21:32 [PATCH 01/17] BLOCK: Move functions out of buffer code " David Howells @ 2006-08-24 21:33 ` David Howells 2006-08-25 14:27 ` Christoph Hellwig ` (2 more replies) 0 siblings, 3 replies; 48+ messages in thread From: David Howells @ 2006-08-24 21:33 UTC (permalink / raw) To: linux-fsdevel, linux-kernel; +Cc: dhowells From: David Howells <dhowells@redhat.com> 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. (*) Various block-based device drivers, such as IDE, the old CDROM drivers and USB storage. (*) 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> --- block/Kconfig | 14 +++++++++ block/Kconfig.iosched | 3 ++ block/Makefile | 2 + drivers/block/Kconfig | 4 +++ drivers/cdrom/Kconfig | 2 + drivers/char/Kconfig | 1 + drivers/char/random.c | 4 +++ drivers/ide/Kconfig | 4 +++ drivers/ieee1394/Kconfig | 2 + drivers/infiniband/ulp/iser/Kconfig | 2 + drivers/infiniband/ulp/srp/Kconfig | 2 + drivers/md/Kconfig | 3 ++ drivers/message/i2o/Kconfig | 2 + drivers/mmc/Kconfig | 2 + drivers/mmc/Makefile | 3 +- drivers/mtd/Kconfig | 12 ++++---- drivers/mtd/devices/Kconfig | 2 + drivers/s390/block/Kconfig | 2 + drivers/scsi/Kconfig | 8 +++-- drivers/usb/storage/Kconfig | 2 + fs/Kconfig | 32 +++++++++++++++++----- fs/Makefile | 14 +++++++-- fs/compat_ioctl.c | 18 ++++++++++++ fs/no-block.c | 22 +++++++++++++++ fs/partitions/Makefile | 2 + fs/proc/proc_misc.c | 11 +++++++ fs/quota.c | 44 +++++++++++++++++++++--------- fs/super.c | 4 +++ fs/xfs/Kconfig | 1 + include/linux/blkdev.h | 52 ++++++++++++++++++++++++++--------- include/linux/buffer_head.h | 16 +++++++++++ include/linux/compat_ioctl.h | 2 + include/linux/elevator.h | 3 ++ include/linux/fs.h | 25 +++++++++++++++-- include/linux/genhd.h | 4 +++ include/linux/mpage.h | 3 ++ include/linux/raid/md.h | 3 ++ include/linux/raid/md_k.h | 3 ++ include/scsi/scsi_tcq.h | 3 +- init/Kconfig | 2 + init/do_mounts.c | 13 ++++++++- kernel/sys_ni.c | 5 +++ mm/Makefile | 2 + mm/filemap.c | 4 +++ mm/migrate.c | 2 + mm/page-writeback.c | 8 +++-- security/seclvl.c | 4 +++ 47 files changed, 308 insertions(+), 70 deletions(-) diff --git a/block/Kconfig b/block/Kconfig index b6f5f0a..9cc0d0b 100644 --- a/block/Kconfig +++ b/block/Kconfig @@ -1,6 +1,18 @@ # # 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. 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 +45,6 @@ config LSF If unsure, say Y. +endif + source block/Kconfig.iosched diff --git a/block/Kconfig.iosched b/block/Kconfig.iosched index 48d090e..903f0d3 100644 --- a/block/Kconfig.iosched +++ b/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 diff --git a/block/Makefile b/block/Makefile index c05de0e..085e967 100644 --- a/block/Makefile +++ b/block/Makefile @@ -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 diff --git a/drivers/block/Kconfig b/drivers/block/Kconfig index b5382ce..422e31d 100644 --- a/drivers/block/Kconfig +++ b/drivers/block/Kconfig @@ -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 diff --git a/drivers/cdrom/Kconfig b/drivers/cdrom/Kconfig index ff5652d..4b12e90 100644 --- a/drivers/cdrom/Kconfig +++ b/drivers/cdrom/Kconfig @@ -3,7 +3,7 @@ # CDROM driver configuration # 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" diff --git a/drivers/char/Kconfig b/drivers/char/Kconfig index c40e487..b9c6777 100644 --- a/drivers/char/Kconfig +++ b/drivers/char/Kconfig @@ -984,6 +984,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. diff --git a/drivers/char/random.c b/drivers/char/random.c index 4c3a5ca..b430a12 100644 --- a/drivers/char/random.c +++ b/drivers/char/random.c @@ -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 } 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->random = state; } } +#endif static ssize_t random_read(struct file * file, char __user * buf, size_t nbytes, loff_t *ppos) diff --git a/drivers/ide/Kconfig b/drivers/ide/Kconfig index b6fb167..69d627b 100644 --- a/drivers/ide/Kconfig +++ b/drivers/ide/Kconfig @@ -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 diff --git a/drivers/ieee1394/Kconfig b/drivers/ieee1394/Kconfig index 1867375..c9d84b9 100644 --- a/drivers/ieee1394/Kconfig +++ b/drivers/ieee1394/Kconfig @@ -122,7 +122,7 @@ config IEEE1394_VIDEO1394 config IEEE1394_SBP2 tristate "SBP-2 support (Harddisks etc.)" - depends on IEEE1394 && SCSI && (PCI || BROKEN) + depends on IEEE1394 && BLOCK && SCSI && (PCI || BROKEN) help This option enables you to use SBP-2 devices connected to your IEEE 1394 bus. SBP-2 devices include harddrives and DVD devices. diff --git a/drivers/infiniband/ulp/iser/Kconfig b/drivers/infiniband/ulp/iser/Kconfig index fead87d..f945953 100644 --- a/drivers/infiniband/ulp/iser/Kconfig +++ b/drivers/infiniband/ulp/iser/Kconfig @@ -1,6 +1,6 @@ config INFINIBAND_ISER tristate "ISCSI RDMA Protocol" - depends on INFINIBAND && SCSI + depends on INFINIBAND && BLOCK && SCSI select SCSI_ISCSI_ATTRS ---help--- Support for the ISCSI RDMA Protocol over InfiniBand. This diff --git a/drivers/infiniband/ulp/srp/Kconfig b/drivers/infiniband/ulp/srp/Kconfig index 8fe3be4..63d7d5a 100644 --- a/drivers/infiniband/ulp/srp/Kconfig +++ b/drivers/infiniband/ulp/srp/Kconfig @@ -1,6 +1,6 @@ config INFINIBAND_SRP tristate "InfiniBand SCSI RDMA Protocol" - depends on INFINIBAND && SCSI + depends on INFINIBAND && BLOCK && SCSI ---help--- Support for the SCSI RDMA Protocol over InfiniBand. This allows you to access storage devices that speak SRP over diff --git a/drivers/md/Kconfig b/drivers/md/Kconfig index bf869ed..1e91f90 100644 --- a/drivers/md/Kconfig +++ b/drivers/md/Kconfig @@ -2,6 +2,8 @@ # # Block device driver configuration # +if CONFIG_BLOCK + menu "Multi-device support (RAID and LVM)" config MD @@ -251,3 +253,4 @@ config DM_MULTIPATH_EMC endmenu +endif diff --git a/drivers/message/i2o/Kconfig b/drivers/message/i2o/Kconfig index fef6771..6443392 100644 --- a/drivers/message/i2o/Kconfig +++ b/drivers/message/i2o/Kconfig @@ -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 diff --git a/drivers/mmc/Kconfig b/drivers/mmc/Kconfig index 45bcf09..f540bd8 100644 --- a/drivers/mmc/Kconfig +++ b/drivers/mmc/Kconfig @@ -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. diff --git a/drivers/mmc/Makefile b/drivers/mmc/Makefile index d2957e3..b1f6e03 100644 --- a/drivers/mmc/Makefile +++ b/drivers/mmc/Makefile @@ -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 diff --git a/drivers/mtd/Kconfig b/drivers/mtd/Kconfig index 1344ad7..188cd37 100644 --- a/drivers/mtd/Kconfig +++ b/drivers/mtd/Kconfig @@ -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 diff --git a/drivers/mtd/devices/Kconfig b/drivers/mtd/devices/Kconfig index 16c02b5..440f685 100644 --- a/drivers/mtd/devices/Kconfig +++ b/drivers/mtd/devices/Kconfig @@ -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: diff --git a/drivers/s390/block/Kconfig b/drivers/s390/block/Kconfig index 929d6ff..b250c53 100644 --- a/drivers/s390/block/Kconfig +++ b/drivers/s390/block/Kconfig @@ -1,4 +1,4 @@ -if S390 +if S390 && BLOCK comment "S/390 block device drivers" depends on S390 diff --git a/drivers/scsi/Kconfig b/drivers/scsi/Kconfig index 96a81cd..afcbe19 100644 --- a/drivers/scsi/Kconfig +++ b/drivers/scsi/Kconfig @@ -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 @@ -43,7 +45,7 @@ comment "SCSI support type (disk, tape, config BLK_DEV_SD tristate "SCSI disk support" - depends on SCSI + depends on SCSI && BLOCK ---help--- If you want to use SCSI hard disks, Fibre Channel disks, USB storage or the SCSI or parallel port version of @@ -98,7 +100,7 @@ config CHR_DEV_OSST config BLK_DEV_SR tristate "SCSI CDROM support" - depends on SCSI + depends on SCSI && BLOCK ---help--- If you want to use a SCSI or FireWire CD-ROM under Linux, say Y and read the SCSI-HOWTO and the CDROM-HOWTO at @@ -473,7 +475,7 @@ source "drivers/scsi/megaraid/Kconfig.me config SCSI_SATA tristate "Serial ATA (SATA) support" - depends on SCSI + depends on SCSI && BLOCK help This driver family supports Serial ATA host controllers and devices. diff --git a/drivers/usb/storage/Kconfig b/drivers/usb/storage/Kconfig index be9eec2..578aa13 100644 --- a/drivers/usb/storage/Kconfig +++ b/drivers/usb/storage/Kconfig @@ -8,7 +8,7 @@ comment "may also be needed; see USB_STO config USB_STORAGE tristate "USB Mass Storage support" - depends on USB + depends on USB && BLOCK select SCSI ---help--- Say Y here if you want to connect USB mass storage devices to your diff --git a/fs/Kconfig b/fs/Kconfig index 3f00a9f..dc5e69b 100644 --- a/fs/Kconfig +++ b/fs/Kconfig @@ -4,6 +4,8 @@ # menu "File systems" +if BLOCK + config EXT2_FS tristate "Second extended fs support" help @@ -383,8 +385,11 @@ config MINIX_FS partition (the one containing the directory /) cannot be compiled as a module. +endif + config ROMFS_FS tristate "ROM file system support" + depends on BLOCK ---help--- This is a very small read-only file system mainly intended for initial ram disks of installation disks, but it could be used for @@ -530,6 +535,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 +603,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 +790,7 @@ config NTFS_RW It is perfectly safe to say N here. endmenu +endif menu "Pseudo filesystems" @@ -907,7 +916,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 @@ -935,7 +944,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 @@ -957,7 +966,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 @@ -970,6 +979,7 @@ config HFS_FS config HFSPLUS_FS tristate "Apple Extended HFS file system support" + depends on BLOCK select NLS select NLS_UTF8 help @@ -983,7 +993,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 @@ -1010,7 +1020,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 @@ -1032,7 +1042,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 @@ -1047,7 +1057,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 @@ -1232,6 +1242,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 @@ -1251,6 +1262,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 @@ -1268,6 +1280,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 @@ -1284,6 +1297,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). @@ -1311,6 +1325,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 @@ -1349,6 +1364,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 @@ -1923,11 +1939,13 @@ config 9P_FS endmenu +if BLOCK menu "Partition Types" source "fs/partitions/Kconfig" endmenu +endif source "fs/nls/Kconfig" diff --git a/fs/Makefile b/fs/Makefile index 8913542..8071c64 100644 --- a/fs/Makefile +++ b/fs/Makefile @@ -5,12 +5,18 @@ # 14 Sep 2000, Christoph Hellwig <hch@in # 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 diff --git a/fs/compat_ioctl.c b/fs/compat_ioctl.c index 7b8a9b4..af160e9 100644 --- a/fs/compat_ioctl.c +++ b/fs/compat_ioctl.c @@ -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, } return err; } +#endif /* CONFIG_BLOCK */ struct sock_fprog32 { unsigned short len; @@ -992,6 +994,7 @@ static int ppp_ioctl_trans(unsigned int } +#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 in return err; } +#endif /* CONFIG_BLOCK */ extern int tty_ioctl(struct inode * inode, struct file * file, unsigned int cmd, unsigned long arg); @@ -1493,6 +1497,7 @@ ret_einval(unsigned int fd, unsigned int 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 :-((( */ @@ -1527,12 +1532,14 @@ static int blkpg_ioctl_trans(unsigned in 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) @@ -1553,6 +1560,7 @@ static int do_blkgetsize64(unsigned int { return sys_ioctl(fd, BLKGETSIZE64, (unsigned long)compat_ptr(arg)); } +#endif /* Bluetooth ioctls */ #define HCIUARTSETPROTO _IOW('U', 200, int) @@ -1573,6 +1581,7 @@ #define HIDPCONNDEL _IOW('H', 201, int) #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; @@ -1897,6 +1906,7 @@ out: kfree(karg); return err; } +#endif struct mtd_oob_buf32 { u_int32_t start; @@ -1938,6 +1948,7 @@ static int mtd_rw_oob(unsigned int fd, u return err; } +#ifdef CONFIG_BLOCK struct raw32_config_request { compat_int_t raw_minor; @@ -2002,6 +2013,7 @@ static int raw_ioctl(unsigned fd, unsign } return ret; } +#endif /* CONFIG_BLOCK */ struct serial_struct32 { compat_int_t type; @@ -2608,6 +2620,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) @@ -2633,14 +2646,17 @@ HANDLE_IOCTL(FDGETFDCSTAT32, fd_ioctl_tr 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 @@ -2679,12 +2695,14 @@ HANDLE_IOCTL(SONET_SETFRAMING, do_atm_io 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) diff --git a/fs/no-block.c b/fs/no-block.c new file mode 100644 index 0000000..d269a93 --- /dev/null +++ b/fs/no-block.c @@ -0,0 +1,22 @@ +/* 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) + * + * 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. + */ + +#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, +}; diff --git a/fs/partitions/Makefile b/fs/partitions/Makefile index d713ce6..67e665f 100644 --- a/fs/partitions/Makefile +++ b/fs/partitions/Makefile @@ -2,7 +2,7 @@ # # Makefile for the linux kernel. # -obj-y := check.o +obj-$(CONFIG_BLOCK) := check.o obj-$(CONFIG_ACORN_PARTITION) += acorn.o obj-$(CONFIG_AMIGA_PARTITION) += amiga.o diff --git a/fs/proc/proc_misc.c b/fs/proc/proc_misc.c index 9f2cfc3..ed8646e 100644 --- a/fs/proc/proc_misc.c +++ b/fs/proc/proc_misc.c @@ -268,12 +268,15 @@ static int devinfo_show(struct seq_file if (i == 0) seq_printf(f, "Character devices:\n"); chrdev_show(f, i); - } else { + } +#ifdef CONFIG_BLOCK + else { i -= CHRDEV_MAJOR_HASH_SIZE; if (i == 0) seq_printf(f, "\nBlock devices:\n"); blkdev_show(f, i); } +#endif return 0; } @@ -346,6 +349,7 @@ static int stram_read_proc(char *page, c } #endif +#ifdef CONFIG_BLOCK extern struct seq_operations partitions_op; static int partitions_open(struct inode *inode, struct file *file) { @@ -369,6 +373,7 @@ static struct file_operations proc_disks .llseek = seq_lseek, .release = seq_release, }; +#endif #ifdef CONFIG_MODULES extern struct seq_operations modules_op; @@ -686,7 +691,9 @@ #endif entry->proc_fops = &proc_kmsg_operations; create_seq_entry("devices", 0, &proc_devinfo_operations); create_seq_entry("cpuinfo", 0, &proc_cpuinfo_operations); +#ifdef CONFIG_BLOCK create_seq_entry("partitions", 0, &proc_partitions_operations); +#endif create_seq_entry("stat", 0, &proc_stat_operations); create_seq_entry("interrupts", 0, &proc_interrupts_operations); #ifdef CONFIG_SLAB @@ -698,7 +705,9 @@ #endif create_seq_entry("buddyinfo",S_IRUGO, &fragmentation_file_operations); create_seq_entry("vmstat",S_IRUGO, &proc_vmstat_file_operations); create_seq_entry("zoneinfo",S_IRUGO, &proc_zoneinfo_file_operations); +#ifdef CONFIG_BLOCK create_seq_entry("diskstats", 0, &proc_diskstats_operations); +#endif #ifdef CONFIG_MODULES create_seq_entry("modules", 0, &proc_modules_operations); #endif diff --git a/fs/quota.c b/fs/quota.c index d6a2be8..b9dae76 100644 --- a/fs/quota.c +++ b/fs/quota.c @@ -338,6 +338,34 @@ static int do_quotactl(struct super_bloc } /* + * look up a superblock on which quota ops will be performed + * - use the name of a block device to find the superblock thereon + */ +static inline struct super_block *quotactl_block(const char __user *special) +{ +#ifdef CONFIG_BLOCK + struct block_device *bdev; + struct super_block *sb; + char *tmp = getname(special); + + if (IS_ERR(tmp)) + return ERR_PTR(PTR_ERR(tmp)); + bdev = lookup_bdev(tmp); + putname(tmp); + if (IS_ERR(bdev)) + return ERR_PTR(PTR_ERR(bdev)); + sb = get_super(bdev); + bdput(bdev); + if (!sb) + return ERR_PTR(-ENODEV); + + return sb; +#else + return ERR_PTR(-ENODEV); +#endif +} + +/* * This is the system call interface. This communicates with * the user-level programs. Currently this only supports diskquota * calls. Maybe we need to add the process quotas etc. in the future, @@ -347,25 +375,15 @@ asmlinkage long sys_quotactl(unsigned in { uint cmds, type; struct super_block *sb = NULL; - struct block_device *bdev; - char *tmp; int ret; cmds = cmd >> SUBCMDSHIFT; type = cmd & SUBCMDMASK; if (cmds != Q_SYNC || special) { - tmp = getname(special); - if (IS_ERR(tmp)) - return PTR_ERR(tmp); - bdev = lookup_bdev(tmp); - putname(tmp); - if (IS_ERR(bdev)) - return PTR_ERR(bdev); - sb = get_super(bdev); - bdput(bdev); - if (!sb) - return -ENODEV; + sb = quotactl_block(special); + if (IS_ERR(sb)) + return PTR_ERR(sb); } ret = check_quotactl_valid(sb, type, cmds, id); diff --git a/fs/super.c b/fs/super.c index 22c2fd1..33ce475 100644 --- a/fs/super.c +++ b/fs/super.c @@ -570,8 +570,10 @@ int do_remount_sb(struct super_block *sb { int retval; +#ifdef CONFIG_BLOCK if (!(flags & MS_RDONLY) && bdev_read_only(sb->s_bdev)) return -EACCES; +#endif if (flags & MS_RDONLY) acct_auto_close(sb); shrink_dcache_sb(sb); @@ -691,6 +693,7 @@ void kill_litter_super(struct super_bloc EXPORT_SYMBOL(kill_litter_super); +#ifdef CONFIG_BLOCK static int set_bdev_super(struct super_block *s, void *data) { s->s_bdev = data; @@ -786,6 +789,7 @@ void kill_block_super(struct super_block } EXPORT_SYMBOL(kill_block_super); +#endif int get_sb_nodev(struct file_system_type *fs_type, int flags, void *data, diff --git a/fs/xfs/Kconfig b/fs/xfs/Kconfig index 26b364c..35115bc 100644 --- a/fs/xfs/Kconfig +++ b/fs/xfs/Kconfig @@ -1,5 +1,6 @@ config XFS_FS tristate "XFS filesystem support" + depends on BLOCK help XFS is a high performance journaling filesystem which originated on the SGI IRIX platform. It is completely multi-threaded, can diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h index e3f30d5..fb85d63 100644 --- a/include/linux/blkdev.h +++ b/include/linux/blkdev.h @@ -16,6 +16,21 @@ #include <linux/stringify.h> #include <asm/scatterlist.h> +#ifdef CONFIG_LBD +# include <asm/div64.h> +# define sector_div(a, b) do_div(a, b) +#else +# define sector_div(n, b)( \ +{ \ + int _res; \ + _res = (n) % (b); \ + (n) /= (b); \ + _res; \ +} \ +) +#endif + +#ifdef CONFIG_BLOCK extern struct super_block *blockdev_superblock; #define sb_is_blkdev_sb(sb) ((sb) == blockdev_superblock) @@ -825,20 +840,6 @@ struct work_struct; int kblockd_schedule_work(struct work_struct *work); void kblockd_flush(void); -#ifdef CONFIG_LBD -# include <asm/div64.h> -# define sector_div(a, b) do_div(a, b) -#else -# define sector_div(n, b)( \ -{ \ - int _res; \ - _res = (n) % (b); \ - (n) /= (b); \ - _res; \ -} \ -) -#endif - #define MODULE_ALIAS_BLOCKDEV(major,minor) \ MODULE_ALIAS("block-major-" __stringify(major) "-" __stringify(minor)) #define MODULE_ALIAS_BLOCKDEV_MAJOR(major) \ @@ -846,4 +847,27 @@ #define MODULE_ALIAS_BLOCKDEV_MAJOR(majo extern void bdev_cache_init(void); +#else /* CONFIG_BLOCK */ +/* + * stubs for when the block layer is configured out + */ +#define buffer_heads_over_limit 0 + +static inline long blk_congestion_wait(int rw, long timeout) +{ + return timeout; +} + +static inline long nr_blockdev_pages(void) +{ + return 0; +} + +static inline void bdev_cache_init(void) {} +static inline void exit_io_context(void) {} + +#define sb_is_blkdev_sb(sb) 0 + +#endif /* CONFIG_BLOCK */ + #endif diff --git a/include/linux/buffer_head.h b/include/linux/buffer_head.h index 64b508e..131ffd3 100644 --- a/include/linux/buffer_head.h +++ b/include/linux/buffer_head.h @@ -14,6 +14,8 @@ #include <linux/pagemap.h> #include <linux/wait.h> #include <asm/atomic.h> +#ifdef CONFIG_BLOCK + enum bh_state_bits { BH_Uptodate, /* Contains valid data */ BH_Dirty, /* Is dirty */ @@ -301,4 +303,18 @@ static inline void lock_buffer(struct bu } extern int __set_page_dirty_buffers(struct page *page); + +#else /* CONFIG_BLOCK */ + +static inline void buffer_init(void) {} +static inline int try_to_free_buffers(struct page *page) { return 1; } +static inline int sync_blockdev(struct block_device *bdev) { return 0; } +static inline int inode_has_buffers(struct inode *inode) { return 0; } +static inline void invalidate_inode_buffers(struct inode *inode) {} +static inline int remove_inode_buffers(struct inode *inode) { return 1; } +static inline int sync_mapping_buffers(struct address_space *mapping) { return 0; } +static inline void invalidate_bdev(struct block_device *bdev, int destroy_dirty_buffers) {} + + +#endif /* CONFIG_BLOCK */ #endif /* _LINUX_BUFFER_HEAD_H */ diff --git a/include/linux/compat_ioctl.h b/include/linux/compat_ioctl.h index 13cea44..307f2db 100644 --- a/include/linux/compat_ioctl.h +++ b/include/linux/compat_ioctl.h @@ -90,6 +90,7 @@ COMPATIBLE_IOCTL(FDTWADDLE) COMPATIBLE_IOCTL(FDFMTTRK) COMPATIBLE_IOCTL(FDRAWCMD) /* 0x12 */ +#ifdef CONFIG_BLOCK COMPATIBLE_IOCTL(BLKRASET) COMPATIBLE_IOCTL(BLKROSET) COMPATIBLE_IOCTL(BLKROGET) @@ -103,6 +104,7 @@ COMPATIBLE_IOCTL(BLKTRACESETUP) COMPATIBLE_IOCTL(BLKTRACETEARDOWN) ULONG_IOCTL(BLKRASET) ULONG_IOCTL(BLKFRASET) +#endif /* RAID */ COMPATIBLE_IOCTL(RAID_VERSION) COMPATIBLE_IOCTL(GET_ARRAY_INFO) diff --git a/include/linux/elevator.h b/include/linux/elevator.h index 1713ace..d2f4b0a 100644 --- a/include/linux/elevator.h +++ b/include/linux/elevator.h @@ -1,6 +1,8 @@ #ifndef _LINUX_ELEVATOR_H #define _LINUX_ELEVATOR_H +#ifdef CONFIG_BLOCK + typedef int (elevator_merge_fn) (request_queue_t *, struct request **, struct bio *); @@ -150,4 +152,5 @@ enum { #define rq_end_sector(rq) ((rq)->sector + (rq)->nr_sectors) +#endif /* CONFIG_BLOCK */ #endif diff --git a/include/linux/fs.h b/include/linux/fs.h index 7339d41..b72e3d0 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h @@ -1477,6 +1477,7 @@ #else extern void putname(const char *name); #endif +#ifdef CONFIG_BLOCK extern int register_blkdev(unsigned int, const char *); extern int unregister_blkdev(unsigned int, const char *); extern struct block_device *bdget(dev_t); @@ -1485,11 +1486,15 @@ extern void bd_forget(struct inode *inod extern void bdput(struct block_device *); extern struct block_device *open_by_devnum(dev_t, unsigned); extern struct block_device *open_partition_by_devnum(dev_t, unsigned); -extern const struct file_operations def_blk_fops; extern const struct address_space_operations def_blk_aops; +#else +static inline void bd_forget(struct inode *inode) {} +#endif +extern const struct file_operations def_blk_fops; extern const struct file_operations def_chr_fops; extern const struct file_operations bad_sock_fops; extern const struct file_operations def_fifo_fops; +#ifdef CONFIG_BLOCK extern int ioctl_by_bdev(struct block_device *, unsigned, unsigned long); extern int blkdev_ioctl(struct inode *, struct file *, unsigned, unsigned long); extern long compat_blkdev_ioctl(struct file *, unsigned, unsigned long); @@ -1505,6 +1510,7 @@ #else #define bd_claim_by_disk(bdev, holder, disk) bd_claim(bdev, holder) #define bd_release_from_disk(bdev, disk) bd_release(bdev) #endif +#endif /* fs/char_dev.c */ #define CHRDEV_MAJOR_HASH_SIZE 255 @@ -1518,14 +1524,19 @@ extern int chrdev_open(struct inode *, s extern void chrdev_show(struct seq_file *,off_t); /* fs/block_dev.c */ -#define BLKDEV_MAJOR_HASH_SIZE 255 #define BDEVNAME_SIZE 32 /* Largest string for a blockdev identifier */ + +#ifdef CONFIG_BLOCK +#define BLKDEV_MAJOR_HASH_SIZE 255 extern const char *__bdevname(dev_t, char *buffer); extern const char *bdevname(struct block_device *bdev, char *buffer); extern struct block_device *lookup_bdev(const char *); extern struct block_device *open_bdev_excl(const char *, int, void *); extern void close_bdev_excl(struct block_device *); extern void blkdev_show(struct seq_file *,off_t); +#else +#define BLKDEV_MAJOR_HASH_SIZE 0 +#endif extern void init_special_inode(struct inode *, umode_t, dev_t); @@ -1539,6 +1550,7 @@ extern const struct file_operations rdwr extern int fs_may_remount_ro(struct super_block *); +#ifdef CONFIG_BLOCK /* * return READ, READA, or WRITE */ @@ -1550,9 +1562,10 @@ #define bio_rw(bio) ((bio)->bi_rw & (RW #define bio_data_dir(bio) ((bio)->bi_rw & 1) extern int check_disk_change(struct block_device *); -extern int invalidate_inodes(struct super_block *); extern int __invalidate_device(struct block_device *); extern int invalidate_partition(struct gendisk *, int); +#endif +extern int invalidate_inodes(struct super_block *); unsigned long invalidate_mapping_pages(struct address_space *mapping, pgoff_t start, pgoff_t end); unsigned long invalidate_inode_pages(struct address_space *mapping); @@ -1585,7 +1598,9 @@ extern void emergency_sync(void); extern void emergency_remount(void); extern int do_remount_sb(struct super_block *sb, int flags, void *data, int force); +#ifdef CONFIG_BLOCK extern sector_t bmap(struct inode *, sector_t); +#endif extern int notify_change(struct dentry *, struct iattr *); extern int permission(struct inode *, int, struct nameidata *); extern int generic_permission(struct inode *, int, @@ -1668,9 +1683,11 @@ static inline void insert_inode_hash(str extern struct file * get_empty_filp(void); extern void file_move(struct file *f, struct list_head *list); extern void file_kill(struct file *f); +#ifdef CONFIG_BLOCK struct bio; extern void submit_bio(int, struct bio *); extern int bdev_read_only(struct block_device *); +#endif extern int set_blocksize(struct block_device *, int); extern int sb_set_blocksize(struct super_block *, int); extern int sb_min_blocksize(struct super_block *, int); @@ -1751,6 +1768,7 @@ static inline void do_generic_file_read( actor); } +#ifdef CONFIG_BLOCK ssize_t __blockdev_direct_IO(int rw, struct kiocb *iocb, struct inode *inode, struct block_device *bdev, const struct iovec *iov, loff_t offset, unsigned long nr_segs, get_block_t get_block, dio_iodone_t end_io, @@ -1788,6 +1806,7 @@ static inline ssize_t blockdev_direct_IO return __blockdev_direct_IO(rw, iocb, inode, bdev, iov, offset, nr_segs, get_block, end_io, DIO_OWN_LOCKING); } +#endif extern const struct file_operations generic_ro_fops; diff --git a/include/linux/genhd.h b/include/linux/genhd.h index e4af57e..41f276f 100644 --- a/include/linux/genhd.h +++ b/include/linux/genhd.h @@ -11,6 +11,8 @@ #define _LINUX_GENHD_H #include <linux/types.h> +#ifdef CONFIG_BLOCK + enum { /* These three have identical behaviour; use the second one if DOS FDISK gets confused about extended/logical partitions starting past cylinder 1023. */ @@ -420,3 +422,5 @@ static inline struct block_device *bdget #endif #endif + +#endif diff --git a/include/linux/mpage.h b/include/linux/mpage.h index 517c098..cc5fb75 100644 --- a/include/linux/mpage.h +++ b/include/linux/mpage.h @@ -9,6 +9,7 @@ * (And no, it doesn't do the #ifdef __MPAGE_H thing, and it doesn't do * nested includes. Get it right in the .c file). */ +#ifdef CONFIG_BLOCK struct writeback_control; typedef int (writepage_t)(struct page *page, struct writeback_control *wbc); @@ -20,3 +21,5 @@ int mpage_writepages(struct address_spac struct writeback_control *wbc, get_block_t get_block); int mpage_writepage(struct page *page, get_block_t *get_block, struct writeback_control *wbc); + +#endif diff --git a/include/linux/raid/md.h b/include/linux/raid/md.h index eb3e547..c588709 100644 --- a/include/linux/raid/md.h +++ b/include/linux/raid/md.h @@ -53,6 +53,8 @@ #include <linux/raid/md_p.h> #include <linux/raid/md_u.h> #include <linux/raid/md_k.h> +#ifdef CONFIG_MD + /* * Different major versions are not compatible. * Different minor versions are only downward compatible. @@ -95,5 +97,6 @@ extern void md_new_event(mddev_t *mddev) extern void md_update_sb(mddev_t * mddev); +#endif /* CONFIG_MD */ #endif diff --git a/include/linux/raid/md_k.h b/include/linux/raid/md_k.h index d288902..920b94f 100644 --- a/include/linux/raid/md_k.h +++ b/include/linux/raid/md_k.h @@ -18,6 +18,8 @@ #define _MD_K_H /* and dm-bio-list.h is not under include/linux because.... ??? */ #include "../../../drivers/md/dm-bio-list.h" +#ifdef CONFIG_BLOCK + #define LEVEL_MULTIPATH (-4) #define LEVEL_LINEAR (-1) #define LEVEL_FAULTY (-5) @@ -362,5 +364,6 @@ static inline void safe_put_page(struct if (p) put_page(p); } +#endif /* CONFIG_BLOCK */ #endif diff --git a/include/scsi/scsi_tcq.h b/include/scsi/scsi_tcq.h index e47e36a..bc34746 100644 --- a/include/scsi/scsi_tcq.h +++ b/include/scsi/scsi_tcq.h @@ -5,7 +5,6 @@ #include <linux/blkdev.h> #include <scsi/scsi_cmnd.h> #include <scsi/scsi_device.h> - #define MSG_SIMPLE_TAG 0x20 #define MSG_HEAD_TAG 0x21 #define MSG_ORDERED_TAG 0x22 @@ -13,6 +12,7 @@ #define MSG_ORDERED_TAG 0x22 #define SCSI_NO_TAG (-1) /* identify no tag in use */ +#ifdef CONFIG_BLOCK /** * scsi_get_tag_type - get the type of tag the device supports @@ -131,4 +131,5 @@ static inline struct scsi_cmnd *scsi_fin return sdev->current_cmnd; } +#endif /* CONFIG_BLOCK */ #endif /* _SCSI_SCSI_TCQ_H */ diff --git a/init/Kconfig b/init/Kconfig index a099fc6..814bacc 100644 --- a/init/Kconfig +++ b/init/Kconfig @@ -92,7 +92,7 @@ config LOCALVERSION_AUTO config SWAP bool "Support for paging of anonymous memory (swap)" - depends on MMU + depends on MMU && BLOCK default y help This option allows you to choose whether you want to have support diff --git a/init/do_mounts.c b/init/do_mounts.c index 94aeec7..dbb2604 100644 --- a/init/do_mounts.c +++ b/init/do_mounts.c @@ -284,7 +284,11 @@ void __init mount_block_root(char *name, { char *fs_names = __getname(); char *p; +#ifdef CONFIG_BLOCK char b[BDEVNAME_SIZE]; +#else + const char *b = name; +#endif get_fs_names(fs_names); retry: @@ -303,7 +307,9 @@ retry: * Allow the user to distinguish between failed sys_open * and bad superblock on root device. */ +#ifdef CONFIG_BLOCK __bdevname(ROOT_DEV, b); +#endif printk("VFS: Cannot open root device \"%s\" or %s\n", root_device_name, b); printk("Please append a correct \"root=\" boot option\n"); @@ -315,7 +321,10 @@ retry: for (p = fs_names; *p; p += strlen(p)+1) printk(" %s", p); printk("\n"); - panic("VFS: Unable to mount root fs on %s", __bdevname(ROOT_DEV, b)); +#ifdef CONFIG_BLOCK + __bdevname(ROOT_DEV, b); +#endif + panic("VFS: Unable to mount root fs on %s", b); out: putname(fs_names); } @@ -386,8 +395,10 @@ #ifdef CONFIG_BLK_DEV_FD change_floppy("root floppy"); } #endif +#ifdef CONFIG_BLOCK create_dev("/dev/root", ROOT_DEV); mount_block_root("/dev/root", root_mountflags); +#endif } /* diff --git a/kernel/sys_ni.c b/kernel/sys_ni.c index 6991bec..7a3b2e7 100644 --- a/kernel/sys_ni.c +++ b/kernel/sys_ni.c @@ -134,3 +134,8 @@ cond_syscall(sys_madvise); cond_syscall(sys_mremap); cond_syscall(sys_remap_file_pages); cond_syscall(compat_sys_move_pages); + +/* block-layer dependent */ +cond_syscall(sys_bdflush); +cond_syscall(sys_ioprio_set); +cond_syscall(sys_ioprio_get); diff --git a/mm/Makefile b/mm/Makefile index 84fff32..3af3154 100644 --- a/mm/Makefile +++ b/mm/Makefile @@ -12,7 +12,7 @@ obj-y := bootmem.o filemap.o mempool.o readahead.o swap.o truncate.o vmscan.o \ prio_tree.o util.o mmzone.o vmstat.o $(mmu-y) -obj-y += bounce.o +obj-$(CONFIG_BLOCK) += bounce.o obj-$(CONFIG_SWAP) += page_io.o swap_state.o swapfile.o thrash.o obj-$(CONFIG_HUGETLBFS) += hugetlb.o obj-$(CONFIG_NUMA) += mempolicy.o diff --git a/mm/filemap.c b/mm/filemap.c index a5ea7e0..88d9cd1 100644 --- a/mm/filemap.c +++ b/mm/filemap.c @@ -2003,6 +2003,7 @@ inline int generic_write_checks(struct f if (unlikely(*pos + *count > inode->i_sb->s_maxbytes)) *count = inode->i_sb->s_maxbytes - *pos; } else { +#ifdef CONFIG_BLOCK loff_t isize; if (bdev_read_only(I_BDEV(inode))) return -EPERM; @@ -2014,6 +2015,9 @@ inline int generic_write_checks(struct f if (*pos + *count > isize) *count = isize - *pos; +#else + return -EPERM; +#endif } return 0; } diff --git a/mm/migrate.c b/mm/migrate.c index 0227163..bedc0ed 100644 --- a/mm/migrate.c +++ b/mm/migrate.c @@ -409,6 +409,7 @@ int migrate_page(struct address_space *m } EXPORT_SYMBOL(migrate_page); +#ifdef CONFIG_BLOCK /* * Migration function for pages with buffers. This function can only be used * if the underlying filesystem guarantees that no other references to "page" @@ -466,6 +467,7 @@ int buffer_migrate_page(struct address_s return 0; } EXPORT_SYMBOL(buffer_migrate_page); +#endif /* * Writeback a page to clean the dirty state diff --git a/mm/page-writeback.c b/mm/page-writeback.c index 668716c..b450520 100644 --- a/mm/page-writeback.c +++ b/mm/page-writeback.c @@ -800,9 +800,11 @@ int fastcall set_page_dirty(struct page if (likely(mapping)) { int (*spd)(struct page *) = mapping->a_ops->set_page_dirty; - if (spd) - return (*spd)(page); - return __set_page_dirty_buffers(page); +#ifdef CONFIG_BLOCK + if (!spd) + spd = __set_page_dirty_buffers; +#endif + return (*spd)(page); } if (!PageDirty(page)) { if (!TestSetPageDirty(page)) diff --git a/security/seclvl.c b/security/seclvl.c index c26dd7d..fc00df2 100644 --- a/security/seclvl.c +++ b/security/seclvl.c @@ -377,6 +377,7 @@ static int seclvl_settime(struct timespe /* claim the blockdev to exclude mounters, release on file close */ static int seclvl_bd_claim(struct inode *inode) { +#ifdef CONFIG_BLOCK int holder; struct block_device *bdev = NULL; dev_t dev = inode->i_rdev; @@ -389,12 +390,14 @@ static int seclvl_bd_claim(struct inode /* claimed, mark it to release on close */ inode->i_security = current; } +#endif return 0; } /* release the blockdev if you claimed it */ static void seclvl_bd_release(struct inode *inode) { +#ifdef CONFIG_BLOCK if (inode && S_ISBLK(inode->i_mode) && inode->i_security == current) { struct block_device *bdev = inode->i_bdev; if (bdev) { @@ -403,6 +406,7 @@ static void seclvl_bd_release(struct ino inode->i_security = NULL; } } +#endif } /** ^ permalink raw reply related [flat|nested] 48+ messages in thread
* Re: [PATCH 17/17] BLOCK: Make it possible to disable the block layer [try #2] 2006-08-24 21:33 ` [PATCH 17/17] BLOCK: Make it possible to disable the block layer " David Howells @ 2006-08-25 14:27 ` Christoph Hellwig 2006-08-25 14:52 ` Alexey Dobriyan 2006-08-25 16:23 ` David Howells 2006-08-25 18:46 ` David Howells 2 siblings, 1 reply; 48+ messages in thread From: Christoph Hellwig @ 2006-08-25 14:27 UTC (permalink / raw) To: David Howells; +Cc: linux-fsdevel, linux-kernel > +++ b/drivers/char/random.c > @@ -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 > } > > 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->random = state; > } > } > +#endif Can you put this two into a single ifdef block? > index fead87d..f945953 100644 > --- a/drivers/infiniband/ulp/iser/Kconfig > +++ b/drivers/infiniband/ulp/iser/Kconfig > @@ -1,6 +1,6 @@ > config INFINIBAND_ISER > tristate "ISCSI RDMA Protocol" > - depends on INFINIBAND && SCSI > + depends on INFINIBAND && BLOCK && SCSI SCSI should (and does in your patch) depend on BLOCK, so you don't need this additional dependency. > - depends on INFINIBAND && SCSI > + depends on INFINIBAND && BLOCK && SCSI ditto. > config BLK_DEV_SD > tristate "SCSI disk support" > - depends on SCSI > + depends on SCSI && BLOCK ditto. > config BLK_DEV_SR > tristate "SCSI CDROM support" > - depends on SCSI > + depends on SCSI && BLOCK ditto. > config SCSI_SATA > tristate "Serial ATA (SATA) support" > - depends on SCSI > + depends on SCSI && BLOCK ditto. > config USB_STORAGE > tristate "USB Mass Storage support" > - depends on USB > + depends on USB && BLOCK ditto. > index 3f00a9f..dc5e69b 100644 > --- a/fs/Kconfig > +++ b/fs/Kconfig > @@ -4,6 +4,8 @@ # > > menu "File systems" > > +if BLOCK > + > config EXT2_FS > tristate "Second extended fs support" > help > @@ -383,8 +385,11 @@ config MINIX_FS > partition (the one containing the directory /) cannot be compiled as > a module. > > +endif > + > config ROMFS_FS > tristate "ROM file system support" > + depends on BLOCK care to group all block-based filesystem in a group so that a single if BLOCK will do it? > +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 > index 7b8a9b4..af160e9 100644 > --- a/fs/compat_ioctl.c > +++ b/fs/compat_ioctl.c > @@ -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, > } > return err; > } > +#endif /* CONFIG_BLOCK */ again, try to reorder things here to only require a single ifdef block (or rather two, a second one for the array entries) if possible. > --- /dev/null > +++ b/fs/no-block.c > @@ -0,0 +1,22 @@ > +/* 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) > + * > + * 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. > + */ > + > +#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, > +}; Can we put this into some other file under #ifndef CONFIG_BLOCK to avoid the separate file and makefile ugliness? > diff --git a/include/scsi/scsi_tcq.h b/include/scsi/scsi_tcq.h > index e47e36a..bc34746 100644 > --- a/include/scsi/scsi_tcq.h > +++ b/include/scsi/scsi_tcq.h > @@ -5,7 +5,6 @@ #include <linux/blkdev.h> > #include <scsi/scsi_cmnd.h> > #include <scsi/scsi_device.h> > > - > #define MSG_SIMPLE_TAG 0x20 > #define MSG_HEAD_TAG 0x21 > #define MSG_ORDERED_TAG 0x22 > @@ -13,6 +12,7 @@ #define MSG_ORDERED_TAG 0x22 > #define SCSI_NO_TAG (-1) /* identify no tag in use */ > > > +#ifdef CONFIG_BLOCK > > /** > * scsi_get_tag_type - get the type of tag the device supports > @@ -131,4 +131,5 @@ static inline struct scsi_cmnd *scsi_fin > return sdev->current_cmnd; > } > > +#endif /* CONFIG_BLOCK */ > #endif /* _SCSI_SCSI_TCQ_H */ No one should include this file unless block device support is enabled, so I don't see the point for the ifdefs. Ditto for many other header files you touch that don't contain any stubs for generic code. And btw, shouldn't the option be CONFIG_BLK_DEV instead of CONFIG_BLOCK to fit the variour CONFIG_BLK_DEV_FOO options we have? ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: [PATCH 17/17] BLOCK: Make it possible to disable the block layer [try #2] 2006-08-25 14:27 ` Christoph Hellwig @ 2006-08-25 14:52 ` Alexey Dobriyan 0 siblings, 0 replies; 48+ messages in thread From: Alexey Dobriyan @ 2006-08-25 14:52 UTC (permalink / raw) To: Christoph Hellwig, David Howells, linux-fsdevel, linux-kernel On Fri, Aug 25, 2006 at 03:27:53PM +0100, Christoph Hellwig wrote: > > --- a/fs/Kconfig > > +++ b/fs/Kconfig > > @@ -4,6 +4,8 @@ # > > > > menu "File systems" > > > > +if BLOCK > > + > > config EXT2_FS > > tristate "Second extended fs support" > > help > > @@ -383,8 +385,11 @@ config MINIX_FS > > partition (the one containing the directory /) cannot be compiled as > > a module. > > > > +endif > > + > > config ROMFS_FS > > tristate "ROM file system support" > > + depends on BLOCK > > care to group all block-based filesystem in a group so that a single > if BLOCK will do it? Note that fs/Kconfig in -mm is mostly split into individual fs/*/Kconfig files. ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: [PATCH 17/17] BLOCK: Make it possible to disable the block layer [try #2] 2006-08-24 21:33 ` [PATCH 17/17] BLOCK: Make it possible to disable the block layer " David Howells 2006-08-25 14:27 ` Christoph Hellwig @ 2006-08-25 16:23 ` David Howells 2006-08-29 11:51 ` Christoph Hellwig 2006-08-29 12:23 ` David Howells 2006-08-25 18:46 ` David Howells 2 siblings, 2 replies; 48+ messages in thread From: David Howells @ 2006-08-25 16:23 UTC (permalink / raw) To: Christoph Hellwig; +Cc: David Howells, linux-fsdevel, linux-kernel Christoph Hellwig <hch@infradead.org> wrote: > Can you put this two into a single ifdef block? I suppose it could make sense to move the two disk random source functions together. > > config USB_STORAGE > > tristate "USB Mass Storage support" > > - depends on USB > > + depends on USB && BLOCK > > ditto. ditto? > again, try to reorder things here to only require a single ifdef block > (or rather two, a second one for the array entries) if possible. The problem with reordering things is that it makes the patch bigger, and that makes people complain about not minimalising the changes. > Can we put this into some other file under #ifndef CONFIG_BLOCK to > avoid the separate file and makefile ugliness? *blink* What've you done with the real Christoph Hellwig? You're actually *advocating* the use of a cpp-conditional in a .c file! It doesn't really belong in any of the files that are left. > No one should include this file unless block device support is enabled, > so I don't see the point for the ifdefs. Ditto for many other header > files you touch that don't contain any stubs for generic code. Someone did. Might've been USB storage now that I think about it. > And btw, shouldn't the option be CONFIG_BLK_DEV instead of CONFIG_BLOCK > to fit the variour CONFIG_BLK_DEV_FOO options we have? No. I'm not enabling a specific block device driver. I'm taking out the entire block layer, block drivers, block scheduler and everything that depends on it (such as SCSI). David ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: [PATCH 17/17] BLOCK: Make it possible to disable the block layer [try #2] 2006-08-25 16:23 ` David Howells @ 2006-08-29 11:51 ` Christoph Hellwig 2006-08-29 12:21 ` Stefan Richter 2006-08-29 12:23 ` David Howells 1 sibling, 1 reply; 48+ messages in thread From: Christoph Hellwig @ 2006-08-29 11:51 UTC (permalink / raw) To: David Howells; +Cc: Christoph Hellwig, linux-fsdevel, linux-kernel On Fri, Aug 25, 2006 at 05:23:05PM +0100, David Howells wrote: > > > config USB_STORAGE > > > tristate "USB Mass Storage support" > > > - depends on USB > > > + depends on USB && BLOCK > > > > ditto. > > ditto? Same as above. USB_STORAGE already selects scsi so it shouldn't need to depend on block. ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: [PATCH 17/17] BLOCK: Make it possible to disable the block layer [try #2] 2006-08-29 11:51 ` Christoph Hellwig @ 2006-08-29 12:21 ` Stefan Richter 0 siblings, 0 replies; 48+ messages in thread From: Stefan Richter @ 2006-08-29 12:21 UTC (permalink / raw) To: Christoph Hellwig; +Cc: David Howells, linux-fsdevel, linux-kernel Christoph Hellwig wrote: > On Fri, Aug 25, 2006 at 05:23:05PM +0100, David Howells wrote: >> > > config USB_STORAGE >> > > tristate "USB Mass Storage support" >> > > - depends on USB >> > > + depends on USB && BLOCK >> > >> > ditto. >> >> ditto? > > Same as above. USB_STORAGE already selects scsi so it shouldn't need > to depend on block. David, same with config IEEE1394_SBP2. (sbp2 and usb-storage use one to two block layer symbols directly for the single purpose to tune the SCSI request queue. I.e. they depend on BLOCK just because they are SCSI drivers.) -- Stefan Richter -=====-=-==- =--- ===-= http://arcgraph.de/sr/ ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: [PATCH 17/17] BLOCK: Make it possible to disable the block layer [try #2] 2006-08-25 16:23 ` David Howells 2006-08-29 11:51 ` Christoph Hellwig @ 2006-08-29 12:23 ` David Howells 2006-08-29 12:25 ` Christoph Hellwig 1 sibling, 1 reply; 48+ messages in thread From: David Howells @ 2006-08-29 12:23 UTC (permalink / raw) To: Christoph Hellwig; +Cc: David Howells, linux-fsdevel, linux-kernel Christoph Hellwig <hch@infradead.org> wrote: > Same as above. USB_STORAGE already selects scsi so it shouldn't need > to depend on block. Ah, you've got it the wrong way round. Because USB_STORAGE _selects_ SCSI rather than depending on it, even if SCSI is disabled, USB_STORAGE can be enabled, and that turns on CONFIG_SCSI, even if not all of its dependencies are available. Run "make allyesconfig" and then try to turn off CONFIG_SCSI without this... David ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: [PATCH 17/17] BLOCK: Make it possible to disable the block layer [try #2] 2006-08-29 12:23 ` David Howells @ 2006-08-29 12:25 ` Christoph Hellwig 2006-08-29 13:50 ` Stefan Richter 2006-08-29 19:58 ` Greg KH 0 siblings, 2 replies; 48+ messages in thread From: Christoph Hellwig @ 2006-08-29 12:25 UTC (permalink / raw) To: David Howells; +Cc: Christoph Hellwig, linux-fsdevel, linux-kernel, zippel On Tue, Aug 29, 2006 at 01:23:18PM +0100, David Howells wrote: > Christoph Hellwig <hch@infradead.org> wrote: > > > Same as above. USB_STORAGE already selects scsi so it shouldn't need > > to depend on block. > > Ah, you've got it the wrong way round. > > Because USB_STORAGE _selects_ SCSI rather than depending on it, even if SCSI > is disabled, USB_STORAGE can be enabled, and that turns on CONFIG_SCSI, even > if not all of its dependencies are available. > > Run "make allyesconfig" and then try to turn off CONFIG_SCSI without this... Eeek. The easy fix is to change USB_STORAGE to depend on SCSI (*), but in addition to that we should probably fix Kconfig aswell to adhere to such constraints. (*) that selects is really wrong to start with, the other scsi drivers don't select scsi either. ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: [PATCH 17/17] BLOCK: Make it possible to disable the block layer [try #2] 2006-08-29 12:25 ` Christoph Hellwig @ 2006-08-29 13:50 ` Stefan Richter 2006-08-29 14:13 ` Stefan Richter 2006-08-30 1:11 ` Roman Zippel 2006-08-29 19:58 ` Greg KH 1 sibling, 2 replies; 48+ messages in thread From: Stefan Richter @ 2006-08-29 13:50 UTC (permalink / raw) To: Christoph Hellwig, David Howells, linux-fsdevel, linux-kernel, zippel Christoph Hellwig wrote: > On Tue, Aug 29, 2006 at 01:23:18PM +0100, David Howells wrote: >> Christoph Hellwig <hch@infradead.org> wrote: >> >>> Same as above. USB_STORAGE already selects scsi so it shouldn't need >>> to depend on block. >> Ah, you've got it the wrong way round. >> >> Because USB_STORAGE _selects_ SCSI rather than depending on it, even if SCSI >> is disabled, USB_STORAGE can be enabled, and that turns on CONFIG_SCSI, even >> if not all of its dependencies are available. >> >> Run "make allyesconfig" and then try to turn off CONFIG_SCSI without this... > > Eeek. The easy fix is to change USB_STORAGE to depend on SCSI (*), but in > addition to that we should probably fix Kconfig aswell to adhere to > such constraints. > > > (*) that selects is really wrong to start with, the other scsi drivers don't > select scsi either. It is not wrong per se. If SCSI is set to "N", then any menu items which depend on SCSI are not visible anymore. This is not a problem with any of the items in the SCSI configuration section. But it is a problem for any items that live _in other configuration sections_, such as USB_STORAGE (currently not affected because it selects SCSI) and IEEE1394_SBP2 (does select SCSI now too in -mm). If "select" cannot be fixed or is not en vogue for any other reason, the configuration tools need to be improved otherwise, so that users are guided to options like USB_STORAGE and IEEE1394_SBP2 when SCSI or other "foreign" options were disabled. The kernel configuration is currently presented as a tree, although the dependencies of config options are not a tree. That's were "select" helps. -- Stefan Richter -=====-=-==- =--- ===-= http://arcgraph.de/sr/ ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: [PATCH 17/17] BLOCK: Make it possible to disable the block layer [try #2] 2006-08-29 13:50 ` Stefan Richter @ 2006-08-29 14:13 ` Stefan Richter 2006-08-30 1:12 ` Roman Zippel 2006-08-30 1:11 ` Roman Zippel 1 sibling, 1 reply; 48+ messages in thread From: Stefan Richter @ 2006-08-29 14:13 UTC (permalink / raw) To: linux-kernel; +Cc: Christoph Hellwig, David Howells, linux-fsdevel, zippel I wrote: > If SCSI is set to "N", then any menu items which depend on SCSI are not > visible anymore. [...] > If "select" cannot be fixed or is not en vogue for any other reason, the > configuration tools need to be improved otherwise, so that users are > guided to options like USB_STORAGE and IEEE1394_SBP2 when SCSI or other > "foreign" options were disabled. An easy but crude fix would be to add an according hint at the help text of the immediately superordinate config option. E.g. at IEEE1394: "Also enable SCSI support to be able to switch on SBP-2 support (IEEE 1394 protocol e.g. for storage devices)." But this is extremely ugly /1./ because it would litter help texts of generic options with redundant information about specific options and /2./ because it requires users to find and read help texts in order to convince the configurator to make options visible. -- Stefan Richter -=====-=-==- =--- ===-= http://arcgraph.de/sr/ ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: [PATCH 17/17] BLOCK: Make it possible to disable the block layer [try #2] 2006-08-29 14:13 ` Stefan Richter @ 2006-08-30 1:12 ` Roman Zippel 2006-08-30 18:33 ` Stefan Richter 0 siblings, 1 reply; 48+ messages in thread From: Roman Zippel @ 2006-08-30 1:12 UTC (permalink / raw) To: Stefan Richter Cc: linux-kernel, Christoph Hellwig, David Howells, linux-fsdevel Hi, On Tue, 29 Aug 2006, Stefan Richter wrote: > An easy but crude fix would be to add an according hint at the help text of > the immediately superordinate config option. E.g. at IEEE1394: "Also enable > SCSI support to be able to switch on SBP-2 support (IEEE 1394 protocol e.g. > for storage devices)." But this is extremely ugly /1./ because it would litter > help texts of generic options with redundant information about specific > options and /2./ because it requires users to find and read help texts in > order to convince the configurator to make options visible. You can also add a simple comment which is only visible if !SCSI. bye, Roman ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: [PATCH 17/17] BLOCK: Make it possible to disable the block layer [try #2] 2006-08-30 1:12 ` Roman Zippel @ 2006-08-30 18:33 ` Stefan Richter 2006-08-30 21:43 ` Adrian Bunk 0 siblings, 1 reply; 48+ messages in thread From: Stefan Richter @ 2006-08-30 18:33 UTC (permalink / raw) To: Roman Zippel Cc: linux-kernel, Christoph Hellwig, David Howells, linux-fsdevel Roman Zippel wrote: > On Tue, 29 Aug 2006, Stefan Richter wrote: >> An easy but crude fix would be to add an according hint at the help text of >> the immediately superordinate config option. [...] > You can also add a simple comment which is only visible if !SCSI. Thanks, I will do so. -- Stefan Richter -=====-=-==- =--- ====- http://arcgraph.de/sr/ ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: [PATCH 17/17] BLOCK: Make it possible to disable the block layer [try #2] 2006-08-30 18:33 ` Stefan Richter @ 2006-08-30 21:43 ` Adrian Bunk 2006-08-30 22:41 ` Roman Zippel 2006-08-30 22:50 ` Stefan Richter 0 siblings, 2 replies; 48+ messages in thread From: Adrian Bunk @ 2006-08-30 21:43 UTC (permalink / raw) To: Stefan Richter Cc: Roman Zippel, linux-kernel, Christoph Hellwig, David Howells, linux-fsdevel On Wed, Aug 30, 2006 at 08:33:36PM +0200, Stefan Richter wrote: > Roman Zippel wrote: > >On Tue, 29 Aug 2006, Stefan Richter wrote: > >>An easy but crude fix would be to add an according hint at the help text > >>of > >>the immediately superordinate config option. > [...] > >You can also add a simple comment which is only visible if !SCSI. > > Thanks, I will do so. Please don't do this. USB_STORAGE switched from a depending on SCSI to select'ing SCSI three years ago, and ATA in 2.6.19 will also select SCSI for a good reason: When doing anything kconfig related, you must always remember that the vast majority of kconfig users are not kernel hackers. > Stefan Richter cu Adrian -- "Is there not promise of rain?" Ling Tan asked suddenly out of the darkness. There had been need of rain for many days. "Only a promise," Lao Er said. Pearl S. Buck - Dragon Seed ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: [PATCH 17/17] BLOCK: Make it possible to disable the block layer [try #2] 2006-08-30 21:43 ` Adrian Bunk @ 2006-08-30 22:41 ` Roman Zippel 2006-08-30 23:38 ` Adrian Bunk 2006-09-01 0:15 ` David Woodhouse 2006-08-30 22:50 ` Stefan Richter 1 sibling, 2 replies; 48+ messages in thread From: Roman Zippel @ 2006-08-30 22:41 UTC (permalink / raw) To: Adrian Bunk Cc: Stefan Richter, linux-kernel, Christoph Hellwig, David Howells, linux-fsdevel Hi, On Wed, 30 Aug 2006, Adrian Bunk wrote: > USB_STORAGE switched from a depending on SCSI to select'ing SCSI three > years ago, and ATA in 2.6.19 will also select SCSI for a good reason: It was already silly three years ago. > When doing anything kconfig related, you must always remember that the > vast majority of kconfig users are not kernel hackers. What does that mean, that only kernel hackers can read? bye, Roman ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: [PATCH 17/17] BLOCK: Make it possible to disable the block layer [try #2] 2006-08-30 22:41 ` Roman Zippel @ 2006-08-30 23:38 ` Adrian Bunk 2006-08-30 23:58 ` Roman Zippel 2006-09-01 0:15 ` David Woodhouse 1 sibling, 1 reply; 48+ messages in thread From: Adrian Bunk @ 2006-08-30 23:38 UTC (permalink / raw) To: Roman Zippel Cc: Stefan Richter, linux-kernel, Christoph Hellwig, David Howells, linux-fsdevel On Thu, Aug 31, 2006 at 12:41:02AM +0200, Roman Zippel wrote: > Hi, Hi Roman, > On Wed, 30 Aug 2006, Adrian Bunk wrote: >... > > When doing anything kconfig related, you must always remember that the > > vast majority of kconfig users are not kernel hackers. > > What does that mean, that only kernel hackers can read? no. But sending users from one menu to another for first manually selecting this or that option is less easy for the user than the usage of select. > bye, Roman cu Adrian -- "Is there not promise of rain?" Ling Tan asked suddenly out of the darkness. There had been need of rain for many days. "Only a promise," Lao Er said. Pearl S. Buck - Dragon Seed ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: [PATCH 17/17] BLOCK: Make it possible to disable the block layer [try #2] 2006-08-30 23:38 ` Adrian Bunk @ 2006-08-30 23:58 ` Roman Zippel 2006-08-31 8:01 ` Stefan Richter 0 siblings, 1 reply; 48+ messages in thread From: Roman Zippel @ 2006-08-30 23:58 UTC (permalink / raw) To: Adrian Bunk Cc: Stefan Richter, linux-kernel, Christoph Hellwig, David Howells, linux-fsdevel Hi, On Thu, 31 Aug 2006, Adrian Bunk wrote: > > > When doing anything kconfig related, you must always remember that the > > > vast majority of kconfig users are not kernel hackers. > > > > What does that mean, that only kernel hackers can read? > > no. But sending users from one menu to another for first manually > selecting this or that option is less easy for the user than the usage > of select. How often does he have to do that? Is it really worth it fucking with the kconfig system? bye, Roman ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: [PATCH 17/17] BLOCK: Make it possible to disable the block layer [try #2] 2006-08-30 23:58 ` Roman Zippel @ 2006-08-31 8:01 ` Stefan Richter 0 siblings, 0 replies; 48+ messages in thread From: Stefan Richter @ 2006-08-31 8:01 UTC (permalink / raw) To: Roman Zippel Cc: Adrian Bunk, linux-kernel, Christoph Hellwig, David Howells, linux-fsdevel Roman Zippel wrote: > On Thu, 31 Aug 2006, Adrian Bunk wrote: [...] >> sending users from one menu to another for first manually >> selecting this or that option is less easy for the user than the usage >> of select. > > How often does he have to do that? Is it really worth it fucking with the > kconfig system? Adrian, Roman, both the comment hack and the 'select' hack introduce redundancy into the Kconfig files and add maintenance cost. In addition, 'select' currently brings a danger of inconsistent configuration. As I said before, the proper solution would be enhancements to the "make XYZconfig" UIs to comfortably present unfulfilled dependencies, based on 'depends on' alone. Alas my posting here is yet another one without a patch included... -- Stefan Richter -=====-=-==- =--- ===== http://arcgraph.de/sr/ ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: [PATCH 17/17] BLOCK: Make it possible to disable the block layer [try #2] 2006-08-30 22:41 ` Roman Zippel 2006-08-30 23:38 ` Adrian Bunk @ 2006-09-01 0:15 ` David Woodhouse 2006-09-01 0:48 ` Randy.Dunlap 1 sibling, 1 reply; 48+ messages in thread From: David Woodhouse @ 2006-09-01 0:15 UTC (permalink / raw) To: Roman Zippel Cc: Adrian Bunk, Stefan Richter, linux-kernel, Christoph Hellwig, David Howells, linux-fsdevel On Thu, 2006-08-31 at 00:41 +0200, Roman Zippel wrote: > > USB_STORAGE switched from a depending on SCSI to select'ing SCSI three > > years ago, and ATA in 2.6.19 will also select SCSI for a good reason: > > It was already silly three years ago. I agree. > > When doing anything kconfig related, you must always remember that the > > vast majority of kconfig users are not kernel hackers. > > What does that mean, that only kernel hackers can read? No, it means that we're pandering to Aunt Tillie. -- dwmw2 ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: [PATCH 17/17] BLOCK: Make it possible to disable the block layer [try #2] 2006-09-01 0:15 ` David Woodhouse @ 2006-09-01 0:48 ` Randy.Dunlap 2006-09-01 1:27 ` David Woodhouse 0 siblings, 1 reply; 48+ messages in thread From: Randy.Dunlap @ 2006-09-01 0:48 UTC (permalink / raw) To: David Woodhouse Cc: Roman Zippel, Adrian Bunk, Stefan Richter, linux-kernel, Christoph Hellwig, David Howells, linux-fsdevel On Thu, 31 Aug 2006 17:15:17 -0700 David Woodhouse wrote: > On Thu, 2006-08-31 at 00:41 +0200, Roman Zippel wrote: > > > USB_STORAGE switched from a depending on SCSI to select'ing SCSI three > > > years ago, and ATA in 2.6.19 will also select SCSI for a good reason: > > > > It was already silly three years ago. > > I agree. > > > > When doing anything kconfig related, you must always remember that the > > > vast majority of kconfig users are not kernel hackers. > > > > What does that mean, that only kernel hackers can read? > > No, it means that we're pandering to Aunt Tillie. But David, you edit .config anyway, so who is "make *config" for? Not that I want enable Tillie very much.. --- ~Randy ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: [PATCH 17/17] BLOCK: Make it possible to disable the block layer [try #2] 2006-09-01 0:48 ` Randy.Dunlap @ 2006-09-01 1:27 ` David Woodhouse 2006-09-01 1:47 ` Adrian Bunk 2006-09-01 13:44 ` Jörn Engel 0 siblings, 2 replies; 48+ messages in thread From: David Woodhouse @ 2006-09-01 1:27 UTC (permalink / raw) To: Randy.Dunlap Cc: Roman Zippel, Adrian Bunk, Stefan Richter, linux-kernel, Christoph Hellwig, David Howells, linux-fsdevel On Thu, 2006-08-31 at 17:48 -0700, Randy.Dunlap wrote: > But David, you edit .config anyway, so who is "make *config" for? > Not that I want enable Tillie very much.. I edit .config but still have to use 'make oldconfig' afterwards. And it screws me over because of all this 'select' nonsense. This used to work... sed -i /^CONFIG_SCSI=/d .config yes n | make oldconfig So "make *config" certainly isn't optimised for me, although of course I do have to use it. It seems to be increasingly optimised for Aunt Tillie. -- dwmw2 ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: [PATCH 17/17] BLOCK: Make it possible to disable the block layer [try #2] 2006-09-01 1:27 ` David Woodhouse @ 2006-09-01 1:47 ` Adrian Bunk 2006-09-01 13:44 ` Jörn Engel 1 sibling, 0 replies; 48+ messages in thread From: Adrian Bunk @ 2006-09-01 1:47 UTC (permalink / raw) To: David Woodhouse Cc: Randy.Dunlap, Roman Zippel, Stefan Richter, linux-kernel, Christoph Hellwig, David Howells, linux-fsdevel On Thu, Aug 31, 2006 at 06:27:27PM -0700, David Woodhouse wrote: > On Thu, 2006-08-31 at 17:48 -0700, Randy.Dunlap wrote: > > But David, you edit .config anyway, so who is "make *config" for? > > Not that I want enable Tillie very much.. > > I edit .config but still have to use 'make oldconfig' afterwards. And it > screws me over because of all this 'select' nonsense. This used to > work... > sed -i /^CONFIG_SCSI=/d .config > yes n | make oldconfig > > So "make *config" certainly isn't optimised for me, although of course I > do have to use it. It seems to be increasingly optimised for Aunt > Tillie. The vast majority of konfig user who might have a master in computer science (like our Aunt Tillie has) but aren't kernel hackers have different needs from kernel hackers. I know how hard it is to e.g. find a maximum .config with FW_LOADER=n. Normal kconfig users and kernel hackers have different needs, and the real solution fitting the needs of both groups would in this case be a patch to kconfig that allows a kernel hacker to specify which option to deselect and does the rest automatically. > dwmw2 cu Adrian -- "Is there not promise of rain?" Ling Tan asked suddenly out of the darkness. There had been need of rain for many days. "Only a promise," Lao Er said. Pearl S. Buck - Dragon Seed ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: [PATCH 17/17] BLOCK: Make it possible to disable the block layer [try #2] 2006-09-01 1:27 ` David Woodhouse @ 2006-09-01 13:44 ` Jörn Engel 2006-09-01 13:44 ` Jörn Engel 1 sibling, 0 replies; 48+ messages in thread From: Jörn Engel @ 2006-09-01 13:44 UTC (permalink / raw) To: David Woodhouse Cc: Randy.Dunlap, Roman Zippel, Adrian Bunk, Stefan Richter, linux-kernel, Christoph Hellwig, David Howells, linux-fsdevel On Thu, 31 August 2006 18:27:27 -0700, David Woodhouse wrote: > > I edit .config but still have to use 'make oldconfig' afterwards. And it > screws me over because of all this 'select' nonsense. This used to > work... > sed -i /^CONFIG_SCSI=/d .config > yes n | make oldconfig > > So "make *config" certainly isn't optimised for me, although of course I > do have to use it. It seems to be increasingly optimised for Aunt > Tillie. Coming from you, the Aunt Tillie argument doesn't make more sense than it did coming from ESR. The actual problem existed before select just as it does afterwards. People have to search extensively though Kconfig files to come up with a useful .config. Before people had to magically know that USB_STORAGE requires SCSI. "Magically" because USB_STORAGE didn't show up in either make menuconfig, make xconfig or .config. Now people have to magically know that SCSI=n requires USB_STORAGE=n. You have the exact same problem and it has nothing to do with Aunt Tillie. What this shows is that select was a bad idea, as it merely shifted the problem around instead of fixing it. It appears as if Stefan is looking in the right direction for a decent fix and I'd like to see patches from him. If only to stop these bad analogies ESR tried to argue with. :) Jörn -- It is better to die of hunger having lived without grief and fear, than to live with a troubled spirit amid abundance. -- Epictetus ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: [PATCH 17/17] BLOCK: Make it possible to disable the block layer [try #2] @ 2006-09-01 13:44 ` Jörn Engel 0 siblings, 0 replies; 48+ messages in thread From: Jörn Engel @ 2006-09-01 13:44 UTC (permalink / raw) To: David Woodhouse Cc: Randy.Dunlap, Roman Zippel, Adrian Bunk, Stefan Richter, linux-kernel, Christoph Hellwig, David Howells, linux-fsdevel On Thu, 31 August 2006 18:27:27 -0700, David Woodhouse wrote: > > I edit .config but still have to use 'make oldconfig' afterwards. And it > screws me over because of all this 'select' nonsense. This used to > work... > sed -i /^CONFIG_SCSI=/d .config > yes n | make oldconfig > > So "make *config" certainly isn't optimised for me, although of course I > do have to use it. It seems to be increasingly optimised for Aunt > Tillie. Coming from you, the Aunt Tillie argument doesn't make more sense than it did coming from ESR. The actual problem existed before select just as it does afterwards. People have to search extensively though Kconfig files to come up with a useful .config. Before people had to magically know that USB_STORAGE requires SCSI. "Magically" because USB_STORAGE didn't show up in either make menuconfig, make xconfig or .config. Now people have to magically know that SCSI=n requires USB_STORAGE=n. You have the exact same problem and it has nothing to do with Aunt Tillie. What this shows is that select was a bad idea, as it merely shifted the problem around instead of fixing it. It appears as if Stefan is looking in the right direction for a decent fix and I'd like to see patches from him. If only to stop these bad analogies ESR tried to argue with. :) Jörn -- It is better to die of hunger having lived without grief and fear, than to live with a troubled spirit amid abundance. -- Epictetus - To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: [PATCH 17/17] BLOCK: Make it possible to disable the block layer [try #2] 2006-09-01 13:44 ` Jörn Engel @ 2006-09-01 15:31 ` Stefan Richter -1 siblings, 0 replies; 48+ messages in thread From: Stefan Richter @ 2006-09-01 15:31 UTC (permalink / raw) To: Jörn Engel Cc: David Woodhouse, Randy.Dunlap, Roman Zippel, Adrian Bunk, linux-kernel, Christoph Hellwig, David Howells, linux-fsdevel Jörn Engel wrote: ... > The actual problem existed before select just as it does afterwards. > People have to search extensively though Kconfig files to come up with > a useful .config. Before people had to magically know that > USB_STORAGE requires SCSI. "Magically" because USB_STORAGE didn't > show up in either make menuconfig, make xconfig or .config. Now > people have to magically know that SCSI=n requires USB_STORAGE=n. Yes and no. In the latter case, they have to magically know that at least menuconfig and xconfig can be tricked to list depending options. > What this shows is that select was a bad idea, as it merely shifted > the problem around instead of fixing it. It appears as if Stefan is > looking in the right direction for a decent fix and I'd like to see > patches from him. ... Could be a fun project right after Stefan R got rid of the kernel freezes (months old) and data corruptions (years old) assigned to him at bugzilla.kernel.org... -- Stefan Richter -=====-=-==- =--= ----= http://arcgraph.de/sr/ ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: [PATCH 17/17] BLOCK: Make it possible to disable the block layer [try #2] @ 2006-09-01 15:31 ` Stefan Richter 0 siblings, 0 replies; 48+ messages in thread From: Stefan Richter @ 2006-09-01 15:31 UTC (permalink / raw) To: Jörn Engel Cc: David Woodhouse, Randy.Dunlap, Roman Zippel, Adrian Bunk, linux-kernel, Christoph Hellwig, David Howells, linux-fsdevel Jörn Engel wrote: ... > The actual problem existed before select just as it does afterwards. > People have to search extensively though Kconfig files to come up with > a useful .config. Before people had to magically know that > USB_STORAGE requires SCSI. "Magically" because USB_STORAGE didn't > show up in either make menuconfig, make xconfig or .config. Now > people have to magically know that SCSI=n requires USB_STORAGE=n. Yes and no. In the latter case, they have to magically know that at least menuconfig and xconfig can be tricked to list depending options. > What this shows is that select was a bad idea, as it merely shifted > the problem around instead of fixing it. It appears as if Stefan is > looking in the right direction for a decent fix and I'd like to see > patches from him. ... Could be a fun project right after Stefan R got rid of the kernel freezes (months old) and data corruptions (years old) assigned to him at bugzilla.kernel.org... -- Stefan Richter -=====-=-==- =--= ----= http://arcgraph.de/sr/ - To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: [PATCH 17/17] BLOCK: Make it possible to disable the block layer [try #2] 2006-09-01 15:31 ` Stefan Richter @ 2006-09-01 16:19 ` Jörn Engel -1 siblings, 0 replies; 48+ messages in thread From: Jörn Engel @ 2006-09-01 16:19 UTC (permalink / raw) To: Stefan Richter Cc: David Woodhouse, Randy.Dunlap, Roman Zippel, Adrian Bunk, linux-kernel, Christoph Hellwig, David Howells, linux-fsdevel On Fri, 1 September 2006 17:31:51 +0200, Stefan Richter wrote: > > Yes and no. In the latter case, they have to magically know that at > least menuconfig and xconfig can be tricked to list depending options. True. Marginally better than horrible then. :) > Could be a fun project [...] Absolutely. Assuming that select gets removed in the process, and concentrating on oldconfig, would it be enough to have something like this in the .config? # CONFIG_USB_STORAGE has unmet dependencies: CONFIG_SCSI, CONFIG_BLOCK Now people looking for usb mass storage can find the option without grepping through Kconfig files, but also every single driver for every single disabled subsystem shows up. Might be a bit too much. Jörn -- Invincibility is in oneself, vulnerability is in the opponent. -- Sun Tzu ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: [PATCH 17/17] BLOCK: Make it possible to disable the block layer [try #2] @ 2006-09-01 16:19 ` Jörn Engel 0 siblings, 0 replies; 48+ messages in thread From: Jörn Engel @ 2006-09-01 16:19 UTC (permalink / raw) To: Stefan Richter Cc: David Woodhouse, Randy.Dunlap, Roman Zippel, Adrian Bunk, linux-kernel, Christoph Hellwig, David Howells, linux-fsdevel On Fri, 1 September 2006 17:31:51 +0200, Stefan Richter wrote: > > Yes and no. In the latter case, they have to magically know that at > least menuconfig and xconfig can be tricked to list depending options. True. Marginally better than horrible then. :) > Could be a fun project [...] Absolutely. Assuming that select gets removed in the process, and concentrating on oldconfig, would it be enough to have something like this in the .config? # CONFIG_USB_STORAGE has unmet dependencies: CONFIG_SCSI, CONFIG_BLOCK Now people looking for usb mass storage can find the option without grepping through Kconfig files, but also every single driver for every single disabled subsystem shows up. Might be a bit too much. Jörn -- Invincibility is in oneself, vulnerability is in the opponent. -- Sun Tzu - To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: [PATCH 17/17] BLOCK: Make it possible to disable the block layer [try #2] 2006-09-01 16:19 ` Jörn Engel @ 2006-09-01 16:34 ` Adrian Bunk -1 siblings, 0 replies; 48+ messages in thread From: Adrian Bunk @ 2006-09-01 16:34 UTC (permalink / raw) To: Jörn Engel Cc: Stefan Richter, David Woodhouse, Randy.Dunlap, Roman Zippel, linux-kernel, Christoph Hellwig, David Howells, linux-fsdevel On Fri, Sep 01, 2006 at 06:19:20PM +0200, Jörn Engel wrote: > On Fri, 1 September 2006 17:31:51 +0200, Stefan Richter wrote: > > > > Yes and no. In the latter case, they have to magically know that at > > least menuconfig and xconfig can be tricked to list depending options. > > True. Marginally better than horrible then. :) > > > Could be a fun project [...] > > Absolutely. Assuming that select gets removed in the process, and > concentrating on oldconfig, would it be enough to have something like > this in the .config? > > # CONFIG_USB_STORAGE has unmet dependencies: CONFIG_SCSI, CONFIG_BLOCK > > Now people looking for usb mass storage can find the option without > grepping through Kconfig files, but also every single driver for every > single disabled subsystem shows up. Might be a bit too much. Common use case: A driver was changed to use FW_LOADER. The .config for the old kernel contains CONFIG_FW_LOADER=n. The user runs "make oldconfig" with the old .config in the new kernel. How do you plan to handle this reasonably without select? > Jörn cu Adrian -- "Is there not promise of rain?" Ling Tan asked suddenly out of the darkness. There had been need of rain for many days. "Only a promise," Lao Er said. Pearl S. Buck - Dragon Seed ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: [PATCH 17/17] BLOCK: Make it possible to disable the block layer [try #2] @ 2006-09-01 16:34 ` Adrian Bunk 0 siblings, 0 replies; 48+ messages in thread From: Adrian Bunk @ 2006-09-01 16:34 UTC (permalink / raw) To: Jörn Engel Cc: Stefan Richter, David Woodhouse, Randy.Dunlap, Roman Zippel, linux-kernel, Christoph Hellwig, David Howells, linux-fsdevel On Fri, Sep 01, 2006 at 06:19:20PM +0200, Jörn Engel wrote: > On Fri, 1 September 2006 17:31:51 +0200, Stefan Richter wrote: > > > > Yes and no. In the latter case, they have to magically know that at > > least menuconfig and xconfig can be tricked to list depending options. > > True. Marginally better than horrible then. :) > > > Could be a fun project [...] > > Absolutely. Assuming that select gets removed in the process, and > concentrating on oldconfig, would it be enough to have something like > this in the .config? > > # CONFIG_USB_STORAGE has unmet dependencies: CONFIG_SCSI, CONFIG_BLOCK > > Now people looking for usb mass storage can find the option without > grepping through Kconfig files, but also every single driver for every > single disabled subsystem shows up. Might be a bit too much. Common use case: A driver was changed to use FW_LOADER. The .config for the old kernel contains CONFIG_FW_LOADER=n. The user runs "make oldconfig" with the old .config in the new kernel. How do you plan to handle this reasonably without select? > Jörn cu Adrian -- "Is there not promise of rain?" Ling Tan asked suddenly out of the darkness. There had been need of rain for many days. "Only a promise," Lao Er said. Pearl S. Buck - Dragon Seed - To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: [PATCH 17/17] BLOCK: Make it possible to disable the block layer [try #2] 2006-09-01 16:34 ` Adrian Bunk @ 2006-09-01 17:51 ` Stefan Richter -1 siblings, 0 replies; 48+ messages in thread From: Stefan Richter @ 2006-09-01 17:51 UTC (permalink / raw) To: Adrian Bunk Cc: Jörn Engel, David Woodhouse, Randy.Dunlap, Roman Zippel, linux-kernel, Christoph Hellwig, David Howells, linux-fsdevel Adrian Bunk wrote: > On Fri, Sep 01, 2006 at 06:19:20PM +0200, Jörn Engel wrote: [...] >> Assuming that select gets removed in the process, and >> concentrating on oldconfig, would it be enough to have something like >> this in the .config? >> >> # CONFIG_USB_STORAGE has unmet dependencies: CONFIG_SCSI, CONFIG_BLOCK >> >> Now people looking for usb mass storage can find the option without >> grepping through Kconfig files, but also every single driver for every >> single disabled subsystem shows up. Might be a bit too much. This comment or similar things are apparently not necessary _within subsystems_, just across subsystems, i.e. where the hierarchy of subdirectories and files does not match the hierarchy of dependencies. > Common use case: > A driver was changed to use FW_LOADER. > The .config for the old kernel contains CONFIG_FW_LOADER=n. > The user runs "make oldconfig" with the old .config in the new kernel. > > How do you plan to handle this reasonably without select? "make oldconfig" could ask questions when it sees need to disable formerly enabled options. In general I think: As long as we talk about the various prefab UIs to manipulate .config (i.e. "make {allyes, allmod, allno, def, g, menu, old, rand, silentold, update-po-, x, ''}config"), there may be ways to implement modes of operation which do what people expect from 'select' but with 'depends on' alone. To ensure that no user group is discriminated in the process, committees could be formed. (<- attempt on irony) It will get difficult to entirely please users who don't use these interfaces to .config. But it seems these users are better off without 'select'. -- Stefan Richter -=====-=-==- =--= ----= http://arcgraph.de/sr/ ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: [PATCH 17/17] BLOCK: Make it possible to disable the block layer [try #2] @ 2006-09-01 17:51 ` Stefan Richter 0 siblings, 0 replies; 48+ messages in thread From: Stefan Richter @ 2006-09-01 17:51 UTC (permalink / raw) To: Adrian Bunk Cc: Jörn Engel, David Woodhouse, Randy.Dunlap, Roman Zippel, linux-kernel, Christoph Hellwig, David Howells, linux-fsdevel Adrian Bunk wrote: > On Fri, Sep 01, 2006 at 06:19:20PM +0200, Jörn Engel wrote: [...] >> Assuming that select gets removed in the process, and >> concentrating on oldconfig, would it be enough to have something like >> this in the .config? >> >> # CONFIG_USB_STORAGE has unmet dependencies: CONFIG_SCSI, CONFIG_BLOCK >> >> Now people looking for usb mass storage can find the option without >> grepping through Kconfig files, but also every single driver for every >> single disabled subsystem shows up. Might be a bit too much. This comment or similar things are apparently not necessary _within subsystems_, just across subsystems, i.e. where the hierarchy of subdirectories and files does not match the hierarchy of dependencies. > Common use case: > A driver was changed to use FW_LOADER. > The .config for the old kernel contains CONFIG_FW_LOADER=n. > The user runs "make oldconfig" with the old .config in the new kernel. > > How do you plan to handle this reasonably without select? "make oldconfig" could ask questions when it sees need to disable formerly enabled options. In general I think: As long as we talk about the various prefab UIs to manipulate .config (i.e. "make {allyes, allmod, allno, def, g, menu, old, rand, silentold, update-po-, x, ''}config"), there may be ways to implement modes of operation which do what people expect from 'select' but with 'depends on' alone. To ensure that no user group is discriminated in the process, committees could be formed. (<- attempt on irony) It will get difficult to entirely please users who don't use these interfaces to .config. But it seems these users are better off without 'select'. -- Stefan Richter -=====-=-==- =--= ----= http://arcgraph.de/sr/ - To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: [PATCH 17/17] BLOCK: Make it possible to disable the block layer [try #2] 2006-09-01 17:51 ` Stefan Richter (?) @ 2006-09-01 18:14 ` Sam Ravnborg -1 siblings, 0 replies; 48+ messages in thread From: Sam Ravnborg @ 2006-09-01 18:14 UTC (permalink / raw) To: Stefan Richter Cc: Adrian Bunk, Jörn Engel, David Woodhouse, Randy.Dunlap, Roman Zippel, linux-kernel, Christoph Hellwig, David Howells, linux-fsdevel On Fri, Sep 01, 2006 at 07:51:39PM +0200, Stefan Richter wrote: > > It will get difficult to entirely please users who don't use these > interfaces to .config. We have a number of more or less friendly interfaces to configure the kernel. Yet some people prefer to directly modify the .config. That is fine let them do so. But to get an overview over the sometimes complex logic thay have to turn to move powerfull tools such as menuconfig. Editing .config is a second class citizen way of configuring the kernel, and menuconfig is first class IMHO. So enhancing the .config file to express the dependencies is not the way forward. We should do this in menuconfig (and friends) and let users use the dedicated interface to edit their kernel configuration using the dedicated tools and not by editing .config. Much of the discussion are centered about "select" which is indeed ugly are in some cases ill-used. But prime issue is that using select makes it hard to un-select certain configuration items. And avoiding select makes it un-intuitive to enable some configuration items. So we simple needs to: 1) Make is easy to un-select selected configuration items by unselecting the relevant items 2) Make it possible to select 'non-visible' options by providing a way to satisfy the dependencies. And maybe 2) makes select almost obsolete.. Sam ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: [PATCH 17/17] BLOCK: Make it possible to disable the block layer [try #2] 2006-08-30 21:43 ` Adrian Bunk 2006-08-30 22:41 ` Roman Zippel @ 2006-08-30 22:50 ` Stefan Richter 2006-08-30 23:12 ` Adrian Bunk 1 sibling, 1 reply; 48+ messages in thread From: Stefan Richter @ 2006-08-30 22:50 UTC (permalink / raw) To: Adrian Bunk Cc: Roman Zippel, linux-kernel, Christoph Hellwig, David Howells, linux-fsdevel Adrian Bunk wrote: > USB_STORAGE switched from a depending on SCSI to select'ing SCSI three > years ago, and ATA in 2.6.19 will also select SCSI for a good reason: > > When doing anything kconfig related, you must always remember that the > vast majority of kconfig users are not kernel hackers. I agree with that. But multi-level dependencies are a show-stopper at the moment. -- Stefan Richter -=====-=-==- =--- ===== http://arcgraph.de/sr/ ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: [PATCH 17/17] BLOCK: Make it possible to disable the block layer [try #2] 2006-08-30 22:50 ` Stefan Richter @ 2006-08-30 23:12 ` Adrian Bunk 0 siblings, 0 replies; 48+ messages in thread From: Adrian Bunk @ 2006-08-30 23:12 UTC (permalink / raw) To: Stefan Richter Cc: Roman Zippel, linux-kernel, Christoph Hellwig, David Howells, linux-fsdevel On Thu, Aug 31, 2006 at 12:50:03AM +0200, Stefan Richter wrote: > Adrian Bunk wrote: > >USB_STORAGE switched from a depending on SCSI to select'ing SCSI three > >years ago, and ATA in 2.6.19 will also select SCSI for a good reason: > > > >When doing anything kconfig related, you must always remember that the > >vast majority of kconfig users are not kernel hackers. > > I agree with that. > But multi-level dependencies are a show-stopper at the moment. config IEEE1394_SBP2 tristate "SBP-2 support (Harddisks etc.)" depends on IEEE1394 && BLOCK && (PCI || BROKEN) select SCSI should work fine. > Stefan Richter cu Adrian -- "Is there not promise of rain?" Ling Tan asked suddenly out of the darkness. There had been need of rain for many days. "Only a promise," Lao Er said. Pearl S. Buck - Dragon Seed ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: [PATCH 17/17] BLOCK: Make it possible to disable the block layer [try #2] 2006-08-29 13:50 ` Stefan Richter 2006-08-29 14:13 ` Stefan Richter @ 2006-08-30 1:11 ` Roman Zippel 2006-08-30 11:29 ` Stefan Richter 1 sibling, 1 reply; 48+ messages in thread From: Roman Zippel @ 2006-08-30 1:11 UTC (permalink / raw) To: Stefan Richter Cc: Christoph Hellwig, David Howells, linux-fsdevel, linux-kernel Hi, On Tue, 29 Aug 2006, Stefan Richter wrote: > If "select" cannot be fixed or is not en vogue for any other reason, the > configuration tools need to be improved otherwise, so that users are guided to > options like USB_STORAGE and IEEE1394_SBP2 when SCSI or other "foreign" > options were disabled. > > The kernel configuration is currently presented as a tree, although the > dependencies of config options are not a tree. That's were "select" helps. Actually dependencies are a tree and kconfig verifies that it's valid as well and that's there "select" can wreak havoc. select really creates a reverse dependency, i.e. the value of SCSI depends now on the USB_STORAGE value. This means now that all dependencies of the selected symbol have to be selected as well (either by the selecting symbol or by the selected symbol). With more complex dependencies this can quickly get out of hand in order to maintain a valid and correct dependency tree. That's why I'm not really happy about the current massive use of select and I'd rather find solutions with normal dependencies, which unfortunately isn't trivial, select OTOH was a simple hack. bye, Roman ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: [PATCH 17/17] BLOCK: Make it possible to disable the block layer [try #2] 2006-08-30 1:11 ` Roman Zippel @ 2006-08-30 11:29 ` Stefan Richter 0 siblings, 0 replies; 48+ messages in thread From: Stefan Richter @ 2006-08-30 11:29 UTC (permalink / raw) To: Roman Zippel Cc: Christoph Hellwig, David Howells, linux-fsdevel, linux-kernel Roman Zippel wrote: > On Tue, 29 Aug 2006, Stefan Richter wrote: [...] >> The kernel configuration is currently presented as a tree, although the >> dependencies of config options are not a tree. That's were "select" helps. > > Actually dependencies are a tree and kconfig verifies that it's valid as > well and that's there "select" can wreak havoc. OK. You are right, they are both trees. But the menu tree is different from the dependency tree. I can see two reasons: 1. We expect the menu's layout to reflect function rather than implementation. 2. Menu tree and dependency tree are directed trees, but only the menu tree has a root (i.e. _one_ root). > select really creates a reverse dependency, i.e. the value of SCSI depends > now on the USB_STORAGE value. It doesn't really revert the dependency. It changes the path that the user takes to enable interdependent options. Thereby it changes _how_ the configurator ensures (or rather, _should_ ensure) that dependencies are fulfilled. > This means now that all dependencies of the > selected symbol have to be selected as well (either by the selecting > symbol or by the selected symbol). With more complex dependencies this can > quickly get out of hand in order to maintain a valid and correct > dependency tree. That's why I'm not really happy about the current massive > use of select and I'd rather find solutions with normal dependencies, > which unfortunately isn't trivial, select OTOH was a simple hack. "select" would not be needed if the configurator wouldn't make an option _invisible_ if it depends on another disabled option. It would be nice if the option would stay visible (or better yet, would be optionally visible) and had pointers to unfulfilled dependencies. Or more generally spoken, "select" would not be needed if there were other means to switch the configurator's UI to a layout that exposes more details about dependencies. There is already such a UI mode which fully exposes _fulfilled_ dependencies. -- Stefan Richter -=====-=-==- =--- ====- http://arcgraph.de/sr/ ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: [PATCH 17/17] BLOCK: Make it possible to disable the block layer [try #2] 2006-08-29 12:25 ` Christoph Hellwig 2006-08-29 13:50 ` Stefan Richter @ 2006-08-29 19:58 ` Greg KH 2006-08-29 21:08 ` John Stoffel 2006-08-31 10:13 ` David Howells 1 sibling, 2 replies; 48+ messages in thread From: Greg KH @ 2006-08-29 19:58 UTC (permalink / raw) To: Christoph Hellwig, David Howells, linux-fsdevel, linux-kernel, zippel On Tue, Aug 29, 2006 at 01:25:01PM +0100, Christoph Hellwig wrote: > On Tue, Aug 29, 2006 at 01:23:18PM +0100, David Howells wrote: > > Christoph Hellwig <hch@infradead.org> wrote: > > > > > Same as above. USB_STORAGE already selects scsi so it shouldn't need > > > to depend on block. > > > > Ah, you've got it the wrong way round. > > > > Because USB_STORAGE _selects_ SCSI rather than depending on it, even if SCSI > > is disabled, USB_STORAGE can be enabled, and that turns on CONFIG_SCSI, even > > if not all of its dependencies are available. > > > > Run "make allyesconfig" and then try to turn off CONFIG_SCSI without this... > > Eeek. The easy fix is to change USB_STORAGE to depend on SCSI (*), but in > addition to that we should probably fix Kconfig aswell to adhere to > such constraints. No, the reason this was switched around like this (it used to be the other way), was that people constantly complained about not being able to select the usb-storage driver in their configurations. Can't seem to please everyone these days :) thanks, greg k-h ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: [PATCH 17/17] BLOCK: Make it possible to disable the block layer [try #2] 2006-08-29 19:58 ` Greg KH @ 2006-08-29 21:08 ` John Stoffel 2006-08-31 3:01 ` Matthew Wilcox 2006-08-31 10:13 ` David Howells 1 sibling, 1 reply; 48+ messages in thread From: John Stoffel @ 2006-08-29 21:08 UTC (permalink / raw) To: Greg KH Cc: Christoph Hellwig, David Howells, linux-fsdevel, linux-kernel, zippel >>>>> "Greg" == Greg KH <greg@kroah.com> writes: Greg> On Tue, Aug 29, 2006 at 01:25:01PM +0100, Christoph Hellwig wrote: >> On Tue, Aug 29, 2006 at 01:23:18PM +0100, David Howells wrote: >> > Christoph Hellwig <hch@infradead.org> wrote: >> > >> > > Same as above. USB_STORAGE already selects scsi so it shouldn't need >> > > to depend on block. >> > >> > Ah, you've got it the wrong way round. >> > >> > Because USB_STORAGE _selects_ SCSI rather than depending on it, even if SCSI >> > is disabled, USB_STORAGE can be enabled, and that turns on CONFIG_SCSI, even >> > if not all of its dependencies are available. >> > >> > Run "make allyesconfig" and then try to turn off CONFIG_SCSI without this... >> >> Eeek. The easy fix is to change USB_STORAGE to depend on SCSI (*), but in >> addition to that we should probably fix Kconfig aswell to adhere to >> such constraints. Greg> No, the reason this was switched around like this (it used to be the Greg> other way), was that people constantly complained about not being able Greg> to select the usb-storage driver in their configurations. Maybe the better solution is to remove SCSI as an option, and to just offer SCSI drivers and USB-STORAGE and other SCSI core using drivers instead. Then the SCSI core gets pulled in automatically. It's not like people care about the SCSI core, just the drivers which depend on it. John ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: [PATCH 17/17] BLOCK: Make it possible to disable the block layer [try #2] 2006-08-29 21:08 ` John Stoffel @ 2006-08-31 3:01 ` Matthew Wilcox 2006-08-31 3:04 ` Shaya Potter 0 siblings, 1 reply; 48+ messages in thread From: Matthew Wilcox @ 2006-08-31 3:01 UTC (permalink / raw) To: John Stoffel Cc: Greg KH, Christoph Hellwig, David Howells, linux-fsdevel, linux-kernel, zippel On Tue, Aug 29, 2006 at 05:08:46PM -0400, John Stoffel wrote: > Maybe the better solution is to remove SCSI as an option, and to just > offer SCSI drivers and USB-STORAGE and other SCSI core using drivers > instead. Then the SCSI core gets pulled in automatically. It's not > like people care about the SCSI core, just the drivers which depend on > it. People don't want to have to say "no" to umpteen scsi drivers. They just want to say "no" to SCSI, because they know they don't have scsi. ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: [PATCH 17/17] BLOCK: Make it possible to disable the block layer [try #2] 2006-08-31 3:01 ` Matthew Wilcox @ 2006-08-31 3:04 ` Shaya Potter 2006-08-31 8:53 ` Stefan Richter 0 siblings, 1 reply; 48+ messages in thread From: Shaya Potter @ 2006-08-31 3:04 UTC (permalink / raw) To: Matthew Wilcox Cc: John Stoffel, Greg KH, Christoph Hellwig, David Howells, linux-fsdevel, linux-kernel, zippel On Wed, 2006-08-30 at 21:01 -0600, Matthew Wilcox wrote: > On Tue, Aug 29, 2006 at 05:08:46PM -0400, John Stoffel wrote: > > Maybe the better solution is to remove SCSI as an option, and to just > > offer SCSI drivers and USB-STORAGE and other SCSI core using drivers > > instead. Then the SCSI core gets pulled in automatically. It's not > > like people care about the SCSI core, just the drivers which depend on > > it. > > People don't want to have to say "no" to umpteen scsi drivers. They > just want to say "no" to SCSI, because they know they don't have scsi. so then that's shows a problem with the kconfig syntax. CONFIG_SCSI should perhaps be hidden, and what's visible to the user is CONFIG_SCSI_DRIVER USB-STORAGE would automatically pull in CONFIG_SCSI as would CONFIG_SCSI_DRIVER. or perhaps I'm just talking out of my ass. ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: [PATCH 17/17] BLOCK: Make it possible to disable the block layer [try #2] 2006-08-31 3:04 ` Shaya Potter @ 2006-08-31 8:53 ` Stefan Richter 2006-08-31 12:32 ` Shaya Potter 0 siblings, 1 reply; 48+ messages in thread From: Stefan Richter @ 2006-08-31 8:53 UTC (permalink / raw) To: Shaya Potter Cc: Matthew Wilcox, John Stoffel, Greg KH, Christoph Hellwig, David Howells, linux-fsdevel, linux-kernel, zippel Shaya Potter wrote: > On Wed, 2006-08-30 at 21:01 -0600, Matthew Wilcox wrote: >> On Tue, Aug 29, 2006 at 05:08:46PM -0400, John Stoffel wrote: >> > Maybe the better solution is to remove SCSI as an option, and to just >> > offer SCSI drivers and USB-STORAGE and other SCSI core using drivers [...] >> People don't want to have to say "no" to umpteen scsi drivers. They >> just want to say "no" to SCSI, because they know they don't have scsi. > > so then that's shows a problem with the kconfig syntax. > > CONFIG_SCSI should perhaps be hidden, and what's visible to the user is > CONFIG_SCSI_DRIVER [...] But drivers like usb-storage and sbp2 are SCSI drivers too. What you mean is CONFIG_SCSI_DRIVERS_WHICH_APPEAR_IN_THE_SCSI_MENU. It all just revolves around the fact that the menu layout does not match the dependency graph. We currently sacrifice clarity and integrity of the Kconfigs in order to solve presentational issues. -- Stefan Richter -=====-=-==- =--- ===== http://arcgraph.de/sr/ ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: [PATCH 17/17] BLOCK: Make it possible to disable the block layer [try #2] 2006-08-31 8:53 ` Stefan Richter @ 2006-08-31 12:32 ` Shaya Potter 2006-08-31 13:16 ` Stefan Richter 0 siblings, 1 reply; 48+ messages in thread From: Shaya Potter @ 2006-08-31 12:32 UTC (permalink / raw) To: Stefan Richter Cc: Matthew Wilcox, John Stoffel, Greg KH, Christoph Hellwig, David Howells, linux-fsdevel, linux-kernel, zippel On Thu, 2006-08-31 at 10:53 +0200, Stefan Richter wrote: > Shaya Potter wrote: > > On Wed, 2006-08-30 at 21:01 -0600, Matthew Wilcox wrote: > >> On Tue, Aug 29, 2006 at 05:08:46PM -0400, John Stoffel wrote: > >> > Maybe the better solution is to remove SCSI as an option, and to just > >> > offer SCSI drivers and USB-STORAGE and other SCSI core using drivers > [...] > >> People don't want to have to say "no" to umpteen scsi drivers. They > >> just want to say "no" to SCSI, because they know they don't have scsi. > > > > so then that's shows a problem with the kconfig syntax. > > > > CONFIG_SCSI should perhaps be hidden, and what's visible to the user is > > CONFIG_SCSI_DRIVER > [...] > > But drivers like usb-storage and sbp2 are SCSI drivers too. What you > mean is CONFIG_SCSI_DRIVERS_WHICH_APPEAR_IN_THE_SCSI_MENU. when I said "driver" I meant more along the line of SCSI hardware instead of things that use the "Linux" scsi subsystem. i.e. usb, sata are not scsi hardware even though they use the scsi subsystem. Or to put it another way, perhaps no "select"able option should ever be visibly selectable in XYZconfig. And XYZconfig should only show an option that is "select"able if by selecting it one ends up with a consistent configuration. So you have a "virtual" SCSI_SUBSYSTEM which usb-storage, sbp2, sata all pull in by selecting it. you have SCSI_HARDWARE that adaptec, buslogic, lsilogic...... depend on. SCSI_HARDWARE would also select "SCSI_SUBSYSTEM". ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: [PATCH 17/17] BLOCK: Make it possible to disable the block layer [try #2] 2006-08-31 12:32 ` Shaya Potter @ 2006-08-31 13:16 ` Stefan Richter 2006-08-31 13:27 ` Shaya Potter 0 siblings, 1 reply; 48+ messages in thread From: Stefan Richter @ 2006-08-31 13:16 UTC (permalink / raw) To: Shaya Potter Cc: Matthew Wilcox, John Stoffel, Greg KH, Christoph Hellwig, David Howells, linux-fsdevel, linux-kernel, zippel Shaya Potter wrote: > when I said "driver" I meant more along the line of SCSI hardware > instead of things that use the "Linux" scsi subsystem. [...] > So you have a "virtual" SCSI_SUBSYSTEM which usb-storage, sbp2, sata all > pull in by selecting it. > > you have SCSI_HARDWARE that adaptec, buslogic, lsilogic...... depend on. > SCSI_HARDWARE would also select "SCSI_SUBSYSTEM". One nit: SBP-2 is SCSI. -- Stefan Richter -=====-=-==- =--- ===== http://arcgraph.de/sr/ ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: [PATCH 17/17] BLOCK: Make it possible to disable the block layer [try #2] 2006-08-31 13:16 ` Stefan Richter @ 2006-08-31 13:27 ` Shaya Potter 0 siblings, 0 replies; 48+ messages in thread From: Shaya Potter @ 2006-08-31 13:27 UTC (permalink / raw) To: Stefan Richter Cc: Matthew Wilcox, John Stoffel, Greg KH, Christoph Hellwig, David Howells, linux-fsdevel, linux-kernel, zippel On Thu, 2006-08-31 at 15:16 +0200, Stefan Richter wrote: > Shaya Potter wrote: > > when I said "driver" I meant more along the line of SCSI hardware > > instead of things that use the "Linux" scsi subsystem. > [...] > > So you have a "virtual" SCSI_SUBSYSTEM which usb-storage, sbp2, sata all > > pull in by selecting it. > > > > you have SCSI_HARDWARE that adaptec, buslogic, lsilogic...... depend on. > > SCSI_HARDWARE would also select "SCSI_SUBSYSTEM". > > One nit: SBP-2 is SCSI. ok, but you should get the point. basically anything "selectable" perhaps should be a purely "virtual" (as in not shown in XYZconfig) option. how one wants to name the options doesn't really bother me. ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: [PATCH 17/17] BLOCK: Make it possible to disable the block layer [try #2] 2006-08-29 19:58 ` Greg KH 2006-08-29 21:08 ` John Stoffel @ 2006-08-31 10:13 ` David Howells 1 sibling, 0 replies; 48+ messages in thread From: David Howells @ 2006-08-31 10:13 UTC (permalink / raw) To: John Stoffel Cc: Greg KH, Christoph Hellwig, David Howells, linux-fsdevel, linux-kernel, zippel John Stoffel <john@stoffel.org> wrote: > Maybe the better solution is to remove SCSI as an option, and to just > offer SCSI drivers and USB-STORAGE and other SCSI core using drivers > instead. Then the SCSI core gets pulled in automatically. It's not > like people care about the SCSI core, just the drivers which depend on > it. How do you modularise it then? David ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: [PATCH 17/17] BLOCK: Make it possible to disable the block layer [try #2] 2006-08-24 21:33 ` [PATCH 17/17] BLOCK: Make it possible to disable the block layer " David Howells 2006-08-25 14:27 ` Christoph Hellwig 2006-08-25 16:23 ` David Howells @ 2006-08-25 18:46 ` David Howells 2 siblings, 0 replies; 48+ messages in thread From: David Howells @ 2006-08-25 18:46 UTC (permalink / raw) To: David Howells; +Cc: Christoph Hellwig, linux-fsdevel, linux-kernel David Howells <dhowells@redhat.com> wrote: > Christoph Hellwig <hch@infradead.org> wrote: > > > Can you put this two into a single ifdef block? > > I suppose it could make sense to move the two disk random source functions > together. I don't think I should. drivers/char/random.c seems to be carefully laid out with similar functions grouped together under grouping banners. David ^ permalink raw reply [flat|nested] 48+ messages in thread
end of thread, other threads:[~2006-09-01 18:09 UTC | newest] Thread overview: 48+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- [not found] <6Paqj-6iH-23@gated-at.bofh.it> [not found] ` <6NKRa-8sj-9@gated-at.bofh.it> [not found] ` <6Nv5K-8dh-9@gated-at.bofh.it> [not found] ` <6Nvfu-8t8-17@gated-at.bofh.it> [not found] ` <6NMJp-4wS-25@gated-at.bofh.it> [not found] ` <6PaTj-7vF-17@gated-at.bofh.it> [not found] ` <6PaTj-7vF-15@gated-at.bofh.it> [not found] ` <6Pciq-362-13@gated-at.bofh.it> [not found] ` <6PmUm-1Y7-9@gated-at.bofh.it> [not found] ` <6PwAr-6jv-5@gated-at.bofh.it> 2006-08-30 13:23 ` [PATCH 17/17] BLOCK: Make it possible to disable the block layer [try #2] Bodo Eggert 2006-08-30 13:23 ` Bodo Eggert 2006-08-24 21:32 [PATCH 01/17] BLOCK: Move functions out of buffer code " David Howells 2006-08-24 21:33 ` [PATCH 17/17] BLOCK: Make it possible to disable the block layer " David Howells 2006-08-25 14:27 ` Christoph Hellwig 2006-08-25 14:52 ` Alexey Dobriyan 2006-08-25 16:23 ` David Howells 2006-08-29 11:51 ` Christoph Hellwig 2006-08-29 12:21 ` Stefan Richter 2006-08-29 12:23 ` David Howells 2006-08-29 12:25 ` Christoph Hellwig 2006-08-29 13:50 ` Stefan Richter 2006-08-29 14:13 ` Stefan Richter 2006-08-30 1:12 ` Roman Zippel 2006-08-30 18:33 ` Stefan Richter 2006-08-30 21:43 ` Adrian Bunk 2006-08-30 22:41 ` Roman Zippel 2006-08-30 23:38 ` Adrian Bunk 2006-08-30 23:58 ` Roman Zippel 2006-08-31 8:01 ` Stefan Richter 2006-09-01 0:15 ` David Woodhouse 2006-09-01 0:48 ` Randy.Dunlap 2006-09-01 1:27 ` David Woodhouse 2006-09-01 1:47 ` Adrian Bunk 2006-09-01 13:44 ` Jörn Engel 2006-09-01 13:44 ` Jörn Engel 2006-09-01 15:31 ` Stefan Richter 2006-09-01 15:31 ` Stefan Richter 2006-09-01 16:19 ` Jörn Engel 2006-09-01 16:19 ` Jörn Engel 2006-09-01 16:34 ` Adrian Bunk 2006-09-01 16:34 ` Adrian Bunk 2006-09-01 17:51 ` Stefan Richter 2006-09-01 17:51 ` Stefan Richter 2006-09-01 18:14 ` Sam Ravnborg 2006-08-30 22:50 ` Stefan Richter 2006-08-30 23:12 ` Adrian Bunk 2006-08-30 1:11 ` Roman Zippel 2006-08-30 11:29 ` Stefan Richter 2006-08-29 19:58 ` Greg KH 2006-08-29 21:08 ` John Stoffel 2006-08-31 3:01 ` Matthew Wilcox 2006-08-31 3:04 ` Shaya Potter 2006-08-31 8:53 ` Stefan Richter 2006-08-31 12:32 ` Shaya Potter 2006-08-31 13:16 ` Stefan Richter 2006-08-31 13:27 ` Shaya Potter 2006-08-31 10:13 ` David Howells 2006-08-25 18:46 ` David Howells
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.