alistair23-linux/fs/ocfs2
Mark Fasheh 9c7af40b21 ocfs2: throttle back local alloc when low on disk space
Ocfs2's local allocator disables itself for the duration of a mount point
when it has trouble allocating a large enough area from the primary bitmap.
That can cause performance problems, especially for disks which were only
temporarily full or fragmented. This patch allows for the allocator to
shrink it's window first, before being disabled. Later, it can also be
re-enabled so that any performance drop is minimized.

To do this, we allow the value of osb->local_alloc_bits to be shrunk when
needed. The default value is recorded in a mostly read-only variable so that
we can re-initialize when required.

Locking had to be updated so that we could protect changes to
local_alloc_bits. Mostly this involves protecting various local alloc values
with the osb spinlock. A new state is also added, OCFS2_LA_THROTTLED, which
is used when the local allocator is has shrunk, but is not disabled. If the
available space dips below 1 megabyte, the local alloc file is disabled. In
either case, local alloc is re-enabled 30 seconds after the event, or when
an appropriate amount of bits is seen in the primary bitmap.

Signed-off-by: Mark Fasheh <mfasheh@suse.com>
2008-10-13 13:57:57 -07:00
..
cluster [PATCH] ocfs2/cluster/netdebug.c: fix warning 2008-08-22 10:56:57 -07:00
dlm SL*B: drop kmem cache argument from constructor 2008-07-26 12:00:07 -07:00
alloc.c ocfs2: fiemap support 2008-10-03 17:32:11 -04:00
alloc.h ocfs2: fiemap support 2008-10-03 17:32:11 -04:00
aops.c ocfs2: Fix a bug in direct IO read. 2008-09-10 01:44:08 -07:00
aops.h
buffer_head_io.c
buffer_head_io.h
dcache.c
dcache.h
dir.c ocfs2: correctly set i_blocks after inline dir gets expanded 2008-08-22 11:09:02 -07:00
dir.h
dlmglue.c ocfs2: fix printk format warnings with OCFS2_FS_STATS=n 2008-07-14 13:57:14 -07:00
dlmglue.h
export.c
export.h
extent_map.c ocfs2: fiemap support 2008-10-03 17:32:11 -04:00
extent_map.h ocfs2: fiemap support 2008-10-03 17:32:11 -04:00
file.c ocfs2: POSIX file locks support 2008-10-13 13:57:57 -07:00
file.h ocfs2: POSIX file locks support 2008-10-13 13:57:57 -07:00
heartbeat.c
heartbeat.h
inode.c ocfs2: POSIX file locks support 2008-10-13 13:57:57 -07:00
inode.h
ioctl.c
ioctl.h
journal.c ocfs2: Fix sleep-with-spinlock recovery regression 2008-08-22 11:08:38 -07:00
journal.h [PATCH 2/2] ocfs2: Fix race between mount and recovery 2008-07-31 16:21:14 -07:00
localalloc.c ocfs2: throttle back local alloc when low on disk space 2008-10-13 13:57:57 -07:00
localalloc.h ocfs2: throttle back local alloc when low on disk space 2008-10-13 13:57:57 -07:00
locks.c ocfs2: POSIX file locks support 2008-10-13 13:57:57 -07:00
locks.h ocfs2: POSIX file locks support 2008-10-13 13:57:57 -07:00
Makefile
mmap.c
mmap.h
namei.c
namei.h
ocfs1_fs_compat.h
ocfs2.h ocfs2: throttle back local alloc when low on disk space 2008-10-13 13:57:57 -07:00
ocfs2_fs.h [PATCH 1/2] ocfs2: Add counter in struct ocfs2_dinode to track journal replays 2008-07-31 16:21:13 -07:00
ocfs2_lockid.h
ocfs2_lockingver.h
resize.c
resize.h
slot_map.c
slot_map.h
stack_o2cb.c
stack_user.c ocfs2: POSIX file locks support 2008-10-13 13:57:57 -07:00
stackglue.c ocfs2: POSIX file locks support 2008-10-13 13:57:57 -07:00
stackglue.h ocfs2: POSIX file locks support 2008-10-13 13:57:57 -07:00
suballoc.c ocfs2: throttle back local alloc when low on disk space 2008-10-13 13:57:57 -07:00
suballoc.h ocfs2: throttle back local alloc when low on disk space 2008-10-13 13:57:57 -07:00
super.c ocfs2: throttle back local alloc when low on disk space 2008-10-13 13:57:57 -07:00
super.h
symlink.c
symlink.h
sysfile.c
sysfile.h
uptodate.c
uptodate.h
ver.c
ver.h