15 years ago[PATCH] new helpers for /proc
Alexander Viro [Wed, 22 May 2002 04:13:05 +0000 (21:13 -0700)]
[PATCH] new helpers for /proc

new helpers for seq_file - for cases where we don't have a non-trivial
iterator and just want to use seq_{printf,putc,...}.

15 years ago[PATCH] clean up readdir() for in-memory
Alexander Viro [Wed, 22 May 2002 04:12:54 +0000 (21:12 -0700)]
[PATCH] clean up readdir() for in-memory

sane readdir() for ramfs-style filesystems

15 years ago[PATCH] kill ->i_op->revalidate()
Alexander Viro [Wed, 22 May 2002 04:12:46 +0000 (21:12 -0700)]
[PATCH] kill ->i_op->revalidate()

kill ->i_op->revalidate()

15 years ago[PATCH] remove s390 procfs abuses
Alexander Viro [Wed, 22 May 2002 04:12:37 +0000 (21:12 -0700)]
[PATCH] remove s390 procfs abuses

massive crapectomy in s390 code - removed procfs abuses

15 years ago[PATCH] add proper ->getattr()
Alexander Viro [Wed, 22 May 2002 04:12:28 +0000 (21:12 -0700)]
[PATCH] add proper ->getattr()

 add proper ->getattr(), clean up do_getattr() and friends.

15 years agoMake the pte unmapping atomic wrt other threads.
Linus Torvalds [Tue, 21 May 2002 14:11:30 +0000 (07:11 -0700)]
Make the pte unmapping atomic wrt other threads.

15 years agoMerge
Linus Torvalds [Tue, 21 May 2002 11:00:53 +0000 (04:00 -0700)]

15 years ago[PATCH] remove preempt_disable from pdflush
Robert Love [Tue, 21 May 2002 11:00:36 +0000 (04:00 -0700)]
[PATCH] remove preempt_disable from pdflush

It seems by the comments the statements were only there to prevent the
thread from finding itself as TASK_RUNNING after a kernel preemption.
Since we reverted to the original preemption behavior (which does not do
that) it should be safe.  Looking over the code confirms - it seems to
not be doing anything evil and is properly locked otherwise.

15 years ago[PATCH] One more fix for swsusp
Pavel Machek [Tue, 21 May 2002 10:56:30 +0000 (03:56 -0700)]
[PATCH] One more fix for swsusp

As andrew pointed out, it is bad idea to run_task_queue() when
spinlock is held. This fixes it (only could be triggered by user
pressing Magic-D). There's minor problem left where Magic-D could be
delayed/ignored under high load. I'll either fix that or kill Magic-D
support (with acpi, it is very easy to trigger swsusp by echo 4 >
/proc/acpi/sleep, so magic key is probably not neccessary any more).

15 years ago[PATCH] get/put_cpu methods
Robert Love [Tue, 21 May 2002 10:21:43 +0000 (03:21 -0700)]
[PATCH] get/put_cpu methods

This implements a get_cpu() and matching put_cpu() to safely hand out
the current CPU to avoid preempt races.  Andrew and I have been bitching
about the need for such a method.

I also went ahead and replaced an example of current explicit
preempt-off with the new methods, as a case in point.

15 years ago[PATCH] more suspend-to-{RAM,disk} fixes
Pavel Machek [Tue, 21 May 2002 10:20:42 +0000 (03:20 -0700)]
[PATCH] more suspend-to-{RAM,disk} fixes

One more build fix, this time for !CONFIG_SOFTWARE_SUSPEND but

I've choosen this solution for now, as it is safest for ACPI people.
I'll modify suspend.c so that freezing part can be included without
whole suspend-to-disk support being included.

15 years ago[PATCH] suspend-to-{RAM,disk} fixup
Pavel Machek [Tue, 21 May 2002 10:20:30 +0000 (03:20 -0700)]
[PATCH] suspend-to-{RAM,disk} fixup

Fix compile problem with suspending diabled

15 years ago[PATCH] suspend-to-{RAM,disk}
Pavel Machek [Tue, 21 May 2002 08:57:49 +0000 (01:57 -0700)]
[PATCH] suspend-to-{RAM,disk}

Here's suspend-to-{RAM,disk} combined patch for
2.5.17. Suspend-to-disk is pretty stable and was tested in
2.4-ac. Suspend-to-RAM is little more experimental, but works for me,
and is certainly better than disk-eating version currently in kernel.

Major parts are: process stopper, S3 specific code, S4 specific

15 years agoMerge
Linus Torvalds [Tue, 21 May 2002 08:50:25 +0000 (01:50 -0700)]

15 years agoMerge
Kai Germaschewski [Tue, 21 May 2002 12:27:19 +0000 (07:27 -0500)]

15 years agoMerge
Linus Torvalds [Tue, 21 May 2002 08:49:42 +0000 (01:49 -0700)]

15 years agokbuild: Restore build nr, improve vmlinux link
Kai Germaschewski [Tue, 21 May 2002 12:26:45 +0000 (07:26 -0500)]
kbuild: Restore build nr, improve vmlinux link

People relied on the build generation number to find out if they actually
booted the right kernel, only incrementing it on config changes isn't
enough for them. So this patch goes back to the old behavior, only done
right this time:

We now don't increment the generation number on every invocation of make,
but on every link of vmlinux. At the same time, this patch fixes the
Makefile to only relink vmlinux if any of its prequisite object files
(or the command line) changed. Incrementing the version number
happens *after* we decided to relink vmlinux.

15 years agokbuild: Regenerate include/linux/version.h only if necessary
Kai Germaschewski [Tue, 21 May 2002 12:20:10 +0000 (07:20 -0500)]
kbuild: Regenerate include/linux/version.h only if necessary

Before overwriting version.h, check if it actually changed - otherwise
we will unnecessarily rebuild a lot of files, as e.g. module.h depends
on version.h, and many files include module.h

15 years agoMerge bk://
Linus Torvalds [Tue, 21 May 2002 08:49:02 +0000 (01:49 -0700)]
Merge bk://

15 years ago[PATCH] Update to srm_env.c driver (for Alpha arch.)
Jan-Benedict Glaw [Tue, 21 May 2002 08:48:19 +0000 (01:48 -0700)]
[PATCH] Update to srm_env.c driver (for Alpha arch.)

Hi Linus!

Please apply this patch. It updates the srm_env.c driver (to access
Alpha's SRM environment variables) to its current version (which is
already included in up-to-date 2.4.x kernels).


15 years ago[PATCH] remaining cpu_has cleanups
Brian Gerst [Tue, 21 May 2002 08:15:50 +0000 (01:15 -0700)]
[PATCH] remaining cpu_has cleanups

This patch cleans up the remaining direct tests against x86_capability.
      It moves the cpu_has_* macros to the more appropriate
cpufeature.h.  It also introduces the cpu_has() macro to test features
for individual cpus.

15 years ago[PATCH] cpu_has_tsc
Brian Gerst [Tue, 21 May 2002 08:15:41 +0000 (01:15 -0700)]
[PATCH] cpu_has_tsc

This patch converts drivers/char/random.c and
drivers/input/joystick/analog.c to use the cpu_has_tsc macro.

15 years ago[PATCH] cpu_has_mmx
Brian Gerst [Tue, 21 May 2002 08:15:32 +0000 (01:15 -0700)]
[PATCH] cpu_has_mmx

This patch takes the cpu_has_mmx macro introduced in the xor.h header
and puts it in the proper place.  It also converts the ov511 driver to
use the new macro.

15 years ago[PATCH] usb-storage
Andries E. Brouwer [Tue, 21 May 2002 07:13:26 +0000 (00:13 -0700)]
[PATCH] usb-storage

Created the first of a series of usb-storage patches
this afternoon. Please find it below or on
under people/aeb/2.5.16-us-patch .
It removes 5% of the usb-storage code, but should, if I made
no mistake, not affect the behaviour of the code.

(This is the introduction of raw_bulk.c to hold USB-bulk
and scatter-gather code that was repeated three-five times
in various drivers. The next patch is smartmedia.c.)

15 years ago[PATCH] USB Makefile bug fix
Greg Kroah-Hartman [Tue, 21 May 2002 07:13:05 +0000 (00:13 -0700)]
[PATCH] USB Makefile bug fix

fixed problem with UHCI_HCD drivers set to 'y' were not causing the build
to go into the drivers/usb/host directory.

15 years ago[PATCH] USB pegasus driver, new vendor and device id.
Petko Manolov [Tue, 21 May 2002 07:12:49 +0000 (00:12 -0700)]
[PATCH] USB pegasus driver, new vendor and device id.

new vendor and device ID

15 years ago[PATCH] jfs_readdir does not need to grab BKL
Dave Kleikamp [Tue, 21 May 2002 06:49:08 +0000 (23:49 -0700)]
[PATCH] jfs_readdir does not need to grab BKL

15 years ago[PATCH] JFS external journal support
Dave Kleikamp [Tue, 21 May 2002 06:49:01 +0000 (23:49 -0700)]
[PATCH] JFS external journal support

Additional support for external journal.  We're basically adding uuid's
to both the file system and the journal to tie the two together.

15 years agoMove check_pgt_cache() to tlb_finish_mmu().
Linus Torvalds [Tue, 21 May 2002 05:05:02 +0000 (22:05 -0700)]
Move check_pgt_cache() to tlb_finish_mmu().

It should be _after_ we have flushed the TLB.

15 years agokbuild: aic7xxx firmware build should not overwrite shipped files
Kai Germaschewski [Tue, 21 May 2002 04:57:45 +0000 (23:57 -0500)]
kbuild: aic7xxx firmware build should not overwrite shipped files

o Add dependencies on generated files explicitly to the
  aic7xxx Makefile - These cannot be figured out

o Rename the precompiled firmware files to
  shipped_aic7xxx_{reg,seq}.h, so that we don't overwrite
  shipped files when regenerating the firmware

15 years ago[PATCH] reiserfs 64 bit bug in get_virtual_node_size
Chris Mason [Tue, 21 May 2002 04:43:46 +0000 (21:43 -0700)]
[PATCH] reiserfs 64 bit bug in get_virtual_node_size

This patch fixes a problem with reiserfs on 64 bit machines.  Our
struct virtual_item is a different size there, and some calculations
that assume otherwise lead to this panic create_virtual_node:

vs-8030: create_virtual_node: virtual node space consumed

15 years ago[PATCH] bfs header move around + warning fix
Christoph Hellwig [Tue, 21 May 2002 04:39:34 +0000 (21:39 -0700)]
[PATCH] bfs header move around + warning fix

(Patch has been ACKed by the bfs maintainer)

Now that bfs no more is included in the big unions in fs.h it makes
sense to move the contents of bfs_fs_i.h and bfs_fs_sb.h to a bfs-private
location.  I've created fs/bfs/bfs.h for that, also merging in bfs_defs.h.

In addition I've changed si_imap to an unsigned long pointer as the bitops
now use that type explicitly.

15 years ago[PATCH] fix sr compile warnings
Christoph Hellwig [Tue, 21 May 2002 04:39:14 +0000 (21:39 -0700)]
[PATCH] fix sr compile warnings

Remove an unused label and an unused variable.

15 years ago[PATCH] fix bitop warnings in parallel port generic driver
Christoph Hellwig [Tue, 21 May 2002 04:39:06 +0000 (21:39 -0700)]
[PATCH] fix bitop warnings in parallel port generic driver

pg tried to issue bitops on int, this fixes it to use an ulong instead.

15 years ago[PATCH] Tasklet cleanup
Rusty Russell [Tue, 21 May 2002 04:36:50 +0000 (21:36 -0700)]
[PATCH] Tasklet cleanup

This makes tasklet_vec and tasklet_hi_vec static inside softirq.c, and
makes them __per_cpu_data.

15 years ago[PATCH] Futex update.
Rusty Russell [Tue, 21 May 2002 04:36:42 +0000 (21:36 -0700)]
[PATCH] Futex update.

This changes futex semantics to a simple "sleep if this address
equals this value" interface, which is more convenient for building
other primitives.  It also adds a timeout value.

Example library can be found at:

15 years agoMerge
Linus Torvalds [Tue, 21 May 2002 04:35:01 +0000 (21:35 -0700)]

15 years ago[PATCH] buffermem_pages removal (5/5)
Christoph Hellwig [Tue, 21 May 2002 04:32:52 +0000 (21:32 -0700)]
[PATCH] buffermem_pages removal (5/5)

No more users of buffermem_pages are left, remove it.
While at it also remove some orphaned externs around it in swap.h

15 years ago[PATCH] buffermem_pages removal (4/5)
Christoph Hellwig [Tue, 21 May 2002 04:32:42 +0000 (21:32 -0700)]
[PATCH] buffermem_pages removal (4/5)

This is the most discussion-worthy patch of the series:  Change the
meaning of si_meminfo->bufferram from "all pages in pagecache
backed by block devices" to "all pages in pagecache".

In the header/manpage is is documented as "Memory used by buffers",
but as the buffercache is gone I think the new meaning fits the
intention from pre-pagecache days much better.

15 years ago[PATCH] buffermem_pages removal (3/5)
Christoph Hellwig [Tue, 21 May 2002 04:32:34 +0000 (21:32 -0700)]
[PATCH] buffermem_pages removal (3/5)

This one is a bit more controveral as it may break stupid userlevel
programs:  remove the 'Buffers' field from /proc/meminfo and make
the Cached field show the full pagecache size instead of subtracting
the block-device backed pages.

All /proc/meminfo-using programs I have (free, top) still work fine.

15 years ago[PATCH] buffermem_pages removal (2/5)
Christoph Hellwig [Tue, 21 May 2002 04:32:27 +0000 (21:32 -0700)]
[PATCH] buffermem_pages removal (2/5)

Remove buffermem_pages showing from sgi serial code (debug only).

15 years ago[PATCH] buffermem_pages removal (1/5)
Christoph Hellwig [Tue, 21 May 2002 04:32:19 +0000 (21:32 -0700)]
[PATCH] buffermem_pages removal (1/5)

With all work done by akpm in 2.5 Linus no more has a buffer cache
in the traditional sense.  Still we try to keep estimates about
what would be the buffer cache size by keeping the number of pages
indexed by block device inodes.  This is broken not only because the
old buffercache was also used for file data which is nowdays not
hashed to block device inodes and thus makes every user of this data
assume wrong numbers.  Second is is possible to use block device
pages not through the buffer_head interface (i.e. userspace
block device nodes, possibly JFS also soon).  In addition the atomic_t
used for this bookkepping (buffermem_pages) causes cacheline bouncing
on larger machines.

This is the first patch of a series to get rid of it.  It removes the
useless output of supposedly buffer pages in show_mem(), which is used
by the magic sysrq key code.

15 years agokbuild: Stop immediately on error
Kai Germaschewski [Tue, 21 May 2002 04:26:23 +0000 (23:26 -0500)]
kbuild: Stop immediately on error

This patch restores the previous behavior of stopping the build
immediately on error (unless the -k option is given to make)

Before this patch, we would do the echo command no matter if the
compile failed, thus returning success always.

(Jan Harkes)

15 years agoMerge
Kai Germaschewski [Mon, 20 May 2002 19:20:56 +0000 (14:20 -0500)]

15 years agoMerge
Kai Germaschewski [Mon, 20 May 2002 18:58:34 +0000 (13:58 -0500)]

15 years agokbuild: Make USE_STANDARD_AS_RULE default
Kai Germaschewski [Mon, 20 May 2002 18:57:01 +0000 (13:57 -0500)]
kbuild: Make USE_STANDARD_AS_RULE default

15 years agoFix building .i / .s files for testing
Kai Germaschewski [Mon, 20 May 2002 17:40:56 +0000 (12:40 -0500)]
Fix building .i / .s files for testing

E.g. make arch/i386/kernel/process.[is] used to work at least
in the cases where the object wouldn't need any additional command
line flags defined in the local subdir.

Get back this behavior, I think I know how to do this correctly, too,
but that's for later.

15 years agoFix UTS_MACHINE
Kai Germaschewski [Mon, 20 May 2002 17:29:51 +0000 (12:29 -0500)]

Remove the default for UTS_MACHINE, it gets set in
include/linux/compile.h, just as UTS_RELEASE.

(noticed by David Gibson)

15 years agoMake generic TLB shootdown friendlier to non-x86 architectures
Linus Torvalds [Mon, 20 May 2002 14:34:26 +0000 (07:34 -0700)]
Make generic TLB shootdown friendlier to non-x86 architectures

15 years ago[PATCH] Missing init.h in drivers/pci/power.c
David Gibson [Mon, 20 May 2002 13:01:56 +0000 (06:01 -0700)]
[PATCH] Missing init.h in drivers/pci/power.c

This adds a #include to drivers/pci/power.c to define __init.  At least
on PPC4xx this fixes compile problems.

15 years agoFix double i_writecount handling (Tony Luck)
Linus Torvalds [Mon, 20 May 2002 13:01:40 +0000 (06:01 -0700)]
Fix double i_writecount handling (Tony Luck)

15 years agoClean up %cr3 loading on x86, fix lazy TLB problem
Linus Torvalds [Mon, 20 May 2002 12:58:03 +0000 (05:58 -0700)]
Clean up %cr3 loading on x86, fix lazy TLB problem

15 years agoMerge
Linus Torvalds [Mon, 20 May 2002 05:48:18 +0000 (22:48 -0700)]

15 years agokbuild: Speed up vmlinux build
Kai Germaschewski [Mon, 20 May 2002 09:22:57 +0000 (04:22 -0500)]
kbuild: Speed up vmlinux build

The recursive build used to do the following: On entering a directory,
we would first call make in the subdirectories listed in $(subdir-y),
and then call make in the current directory again, with the target

The second invocation was used to make sure that the subdir makes completed
before trying to build the O_TARGET/L_TARGET in the current dir, since
this would link in objects in these subdirectories.

However, using correct dependencies achieves the same, i.e. just
make the objects in $(obj-y) which are not in the local subdirectory
depend on 'sub_dirs', which is the rule to descend into subdirs.

This patch actually halves the time "make vmlinux" takes when there's
nothing to do (which makes sense, as we save half of the make invocations)

15 years agokbuild: Remove generated .<object>.cmd files on 'make clean'
Kai Germaschewski [Mon, 20 May 2002 09:16:00 +0000 (04:16 -0500)]
kbuild: Remove generated .<object>.cmd files on 'make clean'

15 years agokbuild: Standardize building of init/*
Kai Germaschewski [Mon, 20 May 2002 09:14:59 +0000 (04:14 -0500)]
kbuild: Standardize building of init/*

There's no good reason to build the objects in init/ explicitly from
the top-level Makefile. Instead, handle init/ like every other
subdir, which also provides the automatic checks for a changed
command line etc.

15 years agoMerge
Linus Torvalds [Mon, 20 May 2002 05:38:20 +0000 (22:38 -0700)]

15 years agoFix some compiler warnings
Kai Germaschewski [Mon, 20 May 2002 08:59:06 +0000 (03:59 -0500)]
Fix some compiler warnings

Fix some trivial variable/functions/label defined (static) but not used

15 years agoFix ext2 compilation
Kai Germaschewski [Mon, 20 May 2002 08:56:29 +0000 (03:56 -0500)]
Fix ext2 compilation

Removal of locks.h broke the build due to missing definition of capable()
and current.

15 years agoNew makefiles generate .*.cmd files, not .*.flags files
Linus Torvalds [Mon, 20 May 2002 05:23:12 +0000 (22:23 -0700)]
New makefiles generate .*.cmd files, not .*.flags files

15 years agoMerge
Linus Torvalds [Mon, 20 May 2002 05:09:19 +0000 (22:09 -0700)]

15 years agoMerge
Kai Germaschewski [Mon, 20 May 2002 08:30:24 +0000 (03:30 -0500)]

15 years ago[PATCH] ips for 2.5
Jack Hammer [Mon, 20 May 2002 05:08:33 +0000 (22:08 -0700)]
[PATCH] ips for 2.5

ips driver update ( version 5.10.13-BETA )

15 years agoUpdate kernel version to 2.5.17
Linus Torvalds [Mon, 20 May 2002 05:08:19 +0000 (22:08 -0700)]
Update kernel version to 2.5.17

15 years agoFix OSS API emulation when sound is compiled as a module
Linus Torvalds [Mon, 20 May 2002 05:07:20 +0000 (22:07 -0700)]
Fix OSS API emulation when sound is compiled as a module

15 years ago[PATCH] get rid of <linux/locks.h>
Christoph Hellwig [Mon, 20 May 2002 02:40:16 +0000 (19:40 -0700)]
[PATCH] get rid of <linux/locks.h>

The lock.h header contained some hand-crafted lcoking routines from
the pre-SMP days.  In 2.5 only lock_super/unlock_super are left,
guarded by a number of completly unrelated (!) includes.

This patch moves lock_super/unlock_super to fs.h, which defined
struct super_block that is needed for those to operate it, removes
locks.h and updates all caller to not include it and add the missing,
previously nested includes where needed.

15 years agoMerge quota update from Jan Kara
Linus Torvalds [Mon, 20 May 2002 02:37:22 +0000 (19:37 -0700)]
Merge quota update from Jan Kara

15 years ago[PATCH] [13/13] quota-13-ioctl
Jan Kara [Mon, 20 May 2002 02:34:49 +0000 (19:34 -0700)]
[PATCH] [13/13] quota-13-ioctl

This patch implements ioctl() for getting space used by file.
I agree it's ioctl() abuse, it doesn't work on links and has
other ugly properties. Better would be to change 'struct stat'
but changing it just due to this is overkill and it will take
some time before there will be enough changes which will provoke
yet another struct stat :). So this is temporary solution...
If you don't like it, simply reject it. The function it provides
is not fundamental...

So that should be all patches. Any comments (or decision about
including/not including) welcome.

15 years ago[PATCH] [12/13] quota-12-compat
Jan Kara [Mon, 20 May 2002 02:34:44 +0000 (19:34 -0700)]
[PATCH] [12/13] quota-12-compat

This patch implements configurable backward compatible quota interface.
Maybe this isn't needed in 2.5 but as some people want to use patches
in 2.4 where it's necessary I have implemented it.

15 years ago[PATCH] [11/13] quota-11-sync
Jan Kara [Mon, 20 May 2002 02:34:39 +0000 (19:34 -0700)]
[PATCH] [11/13] quota-11-sync

Implemented proper syncing of dquots - ie. also global information
about quota files are synced. We find info to sync by walking through
all superblocks...

15 years ago[PATCH] [10/13] quota-10-inttype
Jan Kara [Mon, 20 May 2002 02:34:35 +0000 (19:34 -0700)]
[PATCH] [10/13] quota-10-inttype

Remove use of 'short' in parameters of functions. 'int' is used instead.

15 years ago[PATCH] [9/13] quota-9-format2
Jan Kara [Mon, 20 May 2002 02:34:29 +0000 (19:34 -0700)]
[PATCH] [9/13] quota-9-format2

Implementation of new quota format. The code is almost the same
as in -ac versions of kernel. All the code for new format is in

15 years ago[PATCH] [8/13] quota-8-format1
Jan Kara [Mon, 20 May 2002 02:34:25 +0000 (19:34 -0700)]
[PATCH] [8/13] quota-8-format1

Implementation of old quota format. All the code for old format is now in
quota_v1.c. Code mostly remained the same as in older kernels (just minor
changes were needed to bind it with quota interface).

15 years ago[PATCH] [7/13] quota-7-quotactl
Jan Kara [Mon, 20 May 2002 02:34:20 +0000 (19:34 -0700)]
[PATCH] [7/13] quota-7-quotactl

This is probably the largest chunk in quota patches. It removes old quotactl interface
and implements new one. New interface should not need arch specific conversions so they
are removed. All quota interface stuff is moved to quota.c so we can
easily separate things which should be compiled even if quota is disabled (mainly
because XFS needs some interface even if standard VFS quota is disabled).
Callbacks to filesystem on quota_on() and quota_off() are implemented (needed by Ext3),
quota operations callbacks are now set in super.c on superblock initialization and
not on quota_on(). This way it starts to make sense to have callbacks on alloc_space(),
alloc_inode() etc. as filesystem can override them on read_super(). This will be used
later for implementing journalled quota.

15 years ago[PATCH] [6/13] quota-6-bytes
Jan Kara [Mon, 20 May 2002 02:34:14 +0000 (19:34 -0700)]
[PATCH] [6/13] quota-6-bytes

This patch implements counting of used space in inodes in bytes.
New field i_bytes is added and used space modulo 512 is kept in
it (rest is still kept in i_blocks). Functions manipulating both
i_blocks and i_bytes are implemented (inode_add_bytes(), inode_sub_bytes()
and inode_set_bytes()). Filesystems allocating only in whole blocks
can safely ignore i_bytes field and continue using i_blocks...

15 years ago[PATCH] [5/13] quota-5-space
Jan Kara [Mon, 20 May 2002 02:34:10 +0000 (19:34 -0700)]
[PATCH] [5/13] quota-5-space

This patch implements accounting of used space in bytes.

15 years ago[PATCH] [4/13] quota-4-getstats
Jan Kara [Mon, 20 May 2002 02:34:05 +0000 (19:34 -0700)]
[PATCH] [4/13] quota-4-getstats

  This patch moves reporting of quota statistics from Q_GETSTATS call to
/proc/fs/quota. Also reporting of registered quota formats is added.

15 years ago[PATCH] [3/13] quota-3-register
Jan Kara [Mon, 20 May 2002 02:34:00 +0000 (19:34 -0700)]
[PATCH] [3/13] quota-3-register

  This patch implements list 'quota_formats' with registered quota formats
and functions register_quota_format() and unregister_quota_format() for
manipulating the list.

15 years ago[PATCH] [2/13] quota-2-formats
Jan Kara [Mon, 20 May 2002 02:33:56 +0000 (19:33 -0700)]
[PATCH] [2/13] quota-2-formats

This patch removes most format dependent code from dquot.c and quota.h
and puts calls of callback functions instead.

15 years ago[PATCH] [1/13] quota-1-newlocks
Jan Kara [Mon, 20 May 2002 02:33:51 +0000 (19:33 -0700)]
[PATCH] [1/13] quota-1-newlocks

  This patch adds dq_dup_ref to struct dquot. Functions altering just usage of
quota take just this duplicated reference, inodes, quotactl() helpers take real
dq_count reference. dqput() blocks if there are some duplicated references and
put reference is last 'real one'. This way is assured that quota IO is not
done from functions altering quota usage (quota structure is written on last dqput()).

15 years agoMerge
Linus Torvalds [Mon, 20 May 2002 02:26:35 +0000 (19:26 -0700)]

15 years ago[PATCH] iget_locked [6/6]
Jan Harkes [Mon, 20 May 2002 02:25:21 +0000 (19:25 -0700)]
[PATCH] iget_locked  [6/6]

As of the last patch the inode_hashtable doesn't really need to be
indexed by i_ino anymore, the only reason we still have to keep the
hashvalue and i_ino identical is because of insert_inode_hash.

If at some point a FS specific getattr method is implemented it will be
possible to completely remove any use of i_ino by the VFS.

15 years ago[PATCH] iget_locked [5/6]
Jan Harkes [Mon, 20 May 2002 02:25:16 +0000 (19:25 -0700)]
[PATCH] iget_locked  [5/6]

This patch starts taking i_ino dependencies out of the VFS. The FS
provided test and set callbacks become responsible for testing and
setting inode->i_ino.

Because most filesystems are based on 32-bit unique inode numbers
several functions are duplicated to keep iget_locked as a fast path. We
can avoid unnecessary pointer dereferences and function calls for this
specific case.

15 years ago[PATCH] iget_locked [4/6]
Jan Harkes [Mon, 20 May 2002 02:25:12 +0000 (19:25 -0700)]
[PATCH] iget_locked  [4/6]

Now that we have no more users of iget4 we can kill the function and the
associated read_inode2 callback (i.e. the 'reiserfs specific hack').

Document iget5_locked as the replacement for iget4 in filesystems/porting.

15 years ago[PATCH] iget_locked [3/6]
Jan Harkes [Mon, 20 May 2002 02:25:07 +0000 (19:25 -0700)]
[PATCH] iget_locked  [3/6]

Convert existing filesystems (Coda/NFS/ReiserFS) that currently use
iget4 to iget5_locked.

15 years ago[PATCH] iget_locked [2/6]
Jan Harkes [Mon, 20 May 2002 02:25:02 +0000 (19:25 -0700)]
[PATCH] iget_locked  [2/6]

Now we introduce iget_locked and iget5_locked. These are similar to
iget, but return a locked inode and read_inode has not been called. So
the FS has to call read_inode to initialize the inode and then unlock
it with unlock_new_inode().

This patch is based on the icreate patch from the XFS group, i.e.
it is pretty much identical except for function naming.

15 years ago[PATCH] iget_locked [1/6]
Jan Harkes [Mon, 20 May 2002 02:24:57 +0000 (19:24 -0700)]
[PATCH] iget_locked  [1/6]

Fix a race in iget4. The fs specific data that is used to find an inode
should be initialized while still holding the inode lock.

It adds a 'set' callback function that should be a non-blocking FS
provided function which initializes the private parts of the inode so
that the 'test' callback function can correctly match new inodes.

Touches all filesystems that use iget4 (Coda/NFS/ReiserFS).

15 years agoMerge
Linus Torvalds [Mon, 20 May 2002 01:54:17 +0000 (18:54 -0700)]

15 years agodrivers/char/*
Arnaldo Carvalho de Melo [Sun, 19 May 2002 20:49:34 +0000 (17:49 -0300)]

- fix copy_{to,from}_user error handling, thanks to Rusty to pointing this out on lkml

15 years agodrivers/block/*.c
Arnaldo Carvalho de Melo [Sun, 19 May 2002 19:01:22 +0000 (16:01 -0300)]

  - fix copy_{to,from}_user error handling, thanks to Rusty for
    pointing this out on lkml

15 years ago[PATCH] remove PG_launder
Andrew Morton [Sun, 19 May 2002 09:23:27 +0000 (02:23 -0700)]
[PATCH] remove PG_launder

Removal of PG_launder.

It's not obvious (to me) why this ever existed.  If it's to prevent
deadlocks then I'd like to know who was performing __GFP_FS allocations
while holding a page lock?

But in 2.5, the only memory allocations which are performed when the
caller holds PG_writeback against an unsubmitted page are those which
occur inside submit_bh().  There will be no __GFS_FS allocations in
that call chain.

Removing PG_launder means that memory allocators can block on any
PageWriteback() page at all, which reduces the risk of very long list
walks inside pagemap_lru_lock in shrink_cache().

15 years ago[PATCH] fix ext3 race with writeback
Andrew Morton [Sun, 19 May 2002 09:23:14 +0000 (02:23 -0700)]
[PATCH] fix ext3 race with writeback

The ext3-no-steal patch has exposed a long-standing race in ext3.  It
has been there all the time in 2.4, but never triggered until some
timing change in the ext3-no-steal patch exposed it.  The race was not
present in 2.2 because 2.2's bdflush runs inside lock_kernel().

The problem is that when ext3 is shuffling a buffer between journalling
lists there is a small window where the buffer is marked BH_dirty.
Aonther CPU can grab it, mark it clean and write it out.  Then ext3
puts the buffer onto a list of buffers which are expected to be dirty,
and gets confused later on when the buffer turns out to be clean.

The patch from Stephen records the expected dirtiness of the buffer in
a local variable, so BH_dirty is not transiently set while ext3

15 years ago[PATCH] fix ext3 buffer-stealing
Andrew Morton [Sun, 19 May 2002 09:23:01 +0000 (02:23 -0700)]
[PATCH] fix ext3 buffer-stealing

Patch from sct fixes a long-standing (I did it!) and rather complex
problem with ext3.

The problem is to do with buffers which are continually being dirtied
by an external agent.  I had code in there (for easily-triggerable
livelock avoidance) which steals the buffer from checkpoint mode and
reattaches it to the running transaction.  This violates ext3 ordering
requirements - it can permit journal space to be reclaimed before the
relevant data has really been written out.

Also, we do have to reliably get a lock on the buffer when moving it
between lists and inspecting its internal state.  Otherwise a competing
read from the underlying block device can trigger an assertion failure,
and a competing write to the underlying block device can confuse ext3
journalling state completely.

15 years ago[PATCH] improved I/O scheduling for indirect blocks
Andrew Morton [Sun, 19 May 2002 09:22:50 +0000 (02:22 -0700)]
[PATCH] improved I/O scheduling for indirect blocks

Fixes a performance problem with many-small-file writeout.

At present, files are written out via their mapping and their indirect
blocks are written out via the blockdev mapping.  As we know that
indirects are disk-adjacent to the data it is better to start I/O
against the indirects at the same time as the data.

The delalloc pathes have code in ext2_writepage() which recognises when
the target page->index was at an indirect boundary and does an explicit
hunt-and-write against the neighbouring indirect block.  Which is
ideal.  (Unless the file was dirtied seekily and the page which is next
to the indirect was not dirtied).

This patch does it the other way: when we start writeback against a
mapping, also start writeback against any dirty buffers which are
attached to mapping->private_list.  Let the elevator take care of the

The patch makes a number of tuning changes to the writeback path in
fs-writeback.c.  This is very fiddly code: getting the throughput
tuned, getting the data-integrity "sync" operations right, avoiding
most of the livelock opportunities, getting the `kupdate' function
working efficiently, keeping it all least somewhat comprehensible.

An important intent here is to ensure that metadata blocks for inodes
are marked dirty before writeback starts working the blockdev mapping,
so all the inode blocks are efficiently written back.

The patch removes try_to_writeback_unused_inodes(), which became
unreferenced in vm-writeback.patch.

The patch has a tweak in ext2_put_inode() to prevent ext2 from
incorrectly droppping its preallocation window in response to a random

Generally, many-small-file writeout is a lot faster than 2.5.7 (which
is linux-before-I-futzed-with-it).  The workload which was optimised was

tar xfz /nfs/mountpoint/linux-2.4.18.tar.gz ; sync

on mem=128M and mem=2048M.

With these patches, 2.5.15 is completing in about 2/3 of the time of
2.5.7.  But it is only a shade faster than 2.4.19-pre7.  Why is 2.5.7
so much slower than 2.4.19?  Not sure yet.

Heavy dbench loads (dbench 32 on mem=128M) are slightly faster than
2.5.7 and significantly slower than 2.4.19.  It appears that the cause
is poor read throughput at the later stages of the run.  Because there
are background writeback threads operating at the same time.

The 2.4.19-pre8 write scheduling manages to stop writeback during the
latter stages of the dbench run in a way which I haven't been able to
sanely emulate yet.  It may not be desirable to do this anyway - it's
optimising for the case where the files are about to be deleted.  But
it would be good to find a way of "pausing" the writeback for a few
seconds to allow readers to get an interval of decent bandwidth.

tiobench throughput is basically the same across all recent kernels.
CPU load on writes is down maybe 30% in 2.5.15.

15 years ago[PATCH] ext2: preread inode backing blocks
Andrew Morton [Sun, 19 May 2002 09:22:37 +0000 (02:22 -0700)]
[PATCH] ext2: preread inode backing blocks

When ext2 creates a new inode, perform an asynchronous preread against
its backing block.

Without this patch, many-file writeout gets stalled by having to read
many individual inode table blocks in the middle of writeback.

It's worth about a 20% gain in writeback bandwidth for the many-file
writeback case.

ext3 already reads the inode's backing block in
ext3_new_inode->ext3_mark_inode_dirty, so no change is needed there.

A backport to 2.4 would make sense.

15 years ago[PATCH] writeback tuning
Andrew Morton [Sun, 19 May 2002 09:22:24 +0000 (02:22 -0700)]
[PATCH] writeback tuning

Tune up the VM-based writeback a bit.

- Always use the multipage clustered-writeback function from within
  shrink_cache(), even if the page's mapping has a NULL ->vm_writeback().  So
  clustered writeback is turned on for all address_spaces, not just ext2.

  Subtle effect of this change: it is now the case that *all* writeback
  proceeds along the mapping->dirty_pages list.  The orderedness of the page
  LRUs no longer has an impact on disk scheduling.  So we only have one list
  to keep well-sorted rather than two, and churning pages around on the LRU
  will no longer damage write bandwidth - it's all up to the filesystem.

- Decrease the clustered writeback from 1024 pages(!) to 32 pages.

  (1024 was a leftover from when this code was always dispatching writeback
  to a pdflush thread).

- Fix wakeup_bdflush() so that it actually does write something (duh).

  do_wp_page() needs to call balance_dirty_pages_ratelimited(), so we
  throttle mmap page-dirtiers in the same way as write(2) page-dirtiers.
  This may make wakeup_bdflush() obsolete, but it doesn't hurt.

- Converts generic_vm_writeback() to directly call ->writeback_mapping(),
  rather that going through writeback_single_inode().  This prevents memory
  allocators from blocking on the inode's I_LOCK.  But it does mean that two
  processes can be writing pages from the same mapping at the same time.  If
  filesystems care about this (for layout reasons) then they should serialise
  in their ->writeback_mapping a_op.

  This means that memory-allocators will writeback only pages, not pages
  and inodes.  There are no locks in that writeback path (except for request
  queue exhaustion).  Reduces memory allocation latency.

- Implement new background_writeback function, which when kicked off
  will perform writeback until dirty memory falls below the background

- Put written-back pages onto the remote end of the page LRU.  It
  does this in the slow-and-stupid way at present.  pagemap_lru_lock
  stress-relief is planned...

- Remove the funny writeback_unused_inodes() stuff from prune_icache().
  Writeback from wakeup_bdflush() and the `kupdate' function now just
  naturally cleanses the oldest inodes so we don't need to do anything

- Dirty memory balancing is still using magic numbers: "after you
  dirtied your 1,000th page, go write 1,500".  Obviously, this needs
  more work.

15 years ago[PATCH] pdflush exclusion
Andrew Morton [Sun, 19 May 2002 09:22:12 +0000 (02:22 -0700)]
[PATCH] pdflush exclusion

Use the pdflush exclusion infrastructure to ensure that only one
pdlfush thread is ever performing writeback against a particular

This works rather well.  It requires a lot of activity against a lot of
disks to cause more pdflush threads to start up.  Possibly the
thread-creation logic is a little weak: it starts more threads when a
pdflush thread goes back to sleep.  It may be better to start new
threads within pdlfush_operation().

All non-request_queue-backed address_spaces share the global
default_backing_dev_info structure.  So at present only a single
pdflush instance will be available for background writeback of *all*
NFS filesystems (for example).

If there is benefit in concurrent background writeback for multiple NFS
mounts then NFS would need to create per-mount backing_dev_info
structures and install those into new inode's address_spaces in some

15 years ago[PATCH] pdflush exclusion infrastructure
Andrew Morton [Sun, 19 May 2002 09:22:01 +0000 (02:22 -0700)]
[PATCH] pdflush exclusion infrastructure

Collision avoidance for pdflush threads.

Turns the request_queue-based `unsigned long ra_pages' into a structure
which contains ra_pages as well as a longword.

That longword is used to record the fact that a pdflush thread is
currently writing something back against this request_queue.

Avoids the situation where several pdflush threads are sleeping on the
same request_queue.

This patch provides only the infrastructure for the pdflush exclusion.
This infrastructure gets used in pdflush-single.patch

15 years ago[PATCH] dirty inode management
Andrew Morton [Sun, 19 May 2002 09:21:48 +0000 (02:21 -0700)]
[PATCH] dirty inode management

Fix the "race with umount" in __sync_list().  __sync_list() no longer
puts inodes onto a local list while writing them out.

The super_block.sb_dirty list is kept time-ordered.  Mappings which
have the "oldest" ->dirtied_when are kept at sb->s_dirty.prev.

So the time-based writeback (kupdate) can just bale out when it
encounters a not-old-enough mapping, rather than walking the entire

dirtied_when is set on the *first* dirtying of a mapping.  So once the
mapping is marked dirty it strictly retains its place on s_dirty until
it reaches the oldest end and is written out.  So frequently-dirtied
mappings don't stay dirty at the head of the list for all time.

That local inode list was there for livelock avoidance.  Livelock is
instead avoided by looking at each mapping's ->dirtied_when.  If we
encounter one which was dirtied after this invokation of __sync_list(),
then just bale out - the sync functions are only required to write out
data which was dirty at the time when they were called.

Keeping the s_dirty list in time-order is the right thing to do anyway
- so all the various writeback callers always work against the oldest

15 years ago[PATCH] larger b_size, and misc fixlets
Andrew Morton [Sun, 19 May 2002 09:21:35 +0000 (02:21 -0700)]
[PATCH] larger b_size, and misc fixlets


- make the printk in buffer_io_error() sector_t-aware.

- Some buffer.c cleanups from AntonA: remove a couple of !uptodate
  checks, and set a new buffer's b_blocknr to -1 in a more sensible

- Make buffer_head.b_size a 32-bit quantity.  Needed for 64k pagesize
  on ia64.  Does not increase sizeof(struct buffer_head).