kernel-fxtec-pro1x/fs/ocfs2
Mark Fasheh 415cb80037 ocfs2: Allow smaller allocations during large writes
The ocfs2 write code loops through a page much like the block code, except
that ocfs2 allocation units can be any size, including larger than page
size. Typically it's equal to or larger than page size - most kernels run 4k
pages, the minimum ocfs2 allocation (cluster) size.

Some changes introduced during 2.6.23 changed the way writes to pages are
handled, and inadvertantly broke support for > 4k page size. Instead of just
writing one cluster at a time, we now handle the whole page in one pass.

This means that multiple (small) seperate allocations might happen in the
same pass. The allocation code howver typically optimizes by getting the
maximum which was reserved. This triggered a BUG_ON in the extend code where
it'd ask for a single bit (for one part of a > 4k page) and get back more
than it asked for.

Fix this by providing a variant of the high level allocation function which
allows the caller to specify a maximum. The traditional function remains and
just calls the new one with a maximum determined from the initial
reservation.

Signed-off-by: Mark Fasheh <mark.fasheh@oracle.com>
2007-09-20 15:06:09 -07:00
..
cluster ocfs2: Retry sendpage() if it returns EAGAIN 2007-08-09 17:27:38 -07:00
dlm mm: Remove slab destructors from kmem_cache_create(). 2007-07-20 10:11:58 +09:00
alloc.c ocfs2: Fix calculation of i_blocks during truncate 2007-09-11 11:39:46 -07:00
alloc.h ocfs2: support for removing file regions 2007-07-10 17:32:08 -07:00
aops.c [PATCH] ocfs2: Fix a wrong cluster calculation. 2007-09-11 11:39:05 -07:00
aops.h ocfs2: shared writeable mmap 2007-07-10 17:31:51 -07:00
buffer_head_io.c ocfs2: implement directory read-ahead 2006-09-20 15:53:40 -07:00
buffer_head_io.h ocfs2: implement directory read-ahead 2006-09-20 15:53:40 -07:00
dcache.c ocfs2: Remove special casing for inode creation in ocfs2_dentry_attach_lock() 2006-09-24 13:50:45 -07:00
dcache.h ocfs2: Remove special casing for inode creation in ocfs2_dentry_attach_lock() 2006-09-24 13:50:45 -07:00
dir.c ocfs2: Support creation of unwritten extents 2007-07-10 17:32:04 -07:00
dir.h ocfs2: Remove struct ocfs2_journal_handle in favor of handle_t 2006-12-01 18:28:28 -08:00
dlmglue.c [PATCH] ocfs2: use list_for_each_entry where benefical 2007-07-10 17:19:49 -07:00
dlmglue.h [PATCH] fs/ocfs2/: make 3 functions static 2007-05-02 15:07:27 -07:00
endian.h ocfs2: btree changes for unwritten extents 2007-07-10 17:32:00 -07:00
export.c ocfs2: fix sparse warnings in fs/ocfs2 2007-05-02 15:08:08 -07:00
export.h knfsd: exportfs: add exportfs.h header 2007-07-17 10:23:06 -07:00
extent_map.c ocfs2: btree changes for unwritten extents 2007-07-10 17:32:00 -07:00
extent_map.h ocfs2: Cache extent records 2007-04-26 15:10:40 -07:00
file.c ocfs2: Allow smaller allocations during large writes 2007-09-20 15:06:09 -07:00
file.h ocfs2: Support xfs style space reservation ioctls 2007-07-10 17:32:09 -07:00
heartbeat.c usermodehelper: Tidy up waiting 2007-07-18 08:47:40 -07:00
heartbeat.h
inode.c header cleaning: don't include smp_lock.h when not used 2007-05-08 11:15:07 -07:00
inode.h [PATCH] Copy i_flags to ocfs2 inode flags on write 2007-05-02 15:07:58 -07:00
ioctl.c Introduce is_owner_or_cap() to wrap CAP_FOWNER use with fsuid check 2007-07-17 12:00:03 -07:00
ioctl.h ocfs2: Implement compat_ioctl() 2007-05-02 15:07:16 -07:00
journal.c [PATCH] ocfs2: use list_for_each_entry where benefical 2007-07-10 17:19:49 -07:00
journal.h ocfs2: support for removing file regions 2007-07-10 17:32:08 -07:00
localalloc.c ocfs2: Allow smaller allocations during large writes 2007-09-20 15:06:09 -07:00
localalloc.h ocfs2: Allow smaller allocations during large writes 2007-09-20 15:06:09 -07:00
Makefile
mmap.c fix some conversion overflows 2007-07-20 08:44:19 -07:00
mmap.h
namei.c ocfs2: Fix rename/extend race 2007-08-09 17:27:10 -07:00
namei.h [PATCH] mark struct inode_operations const 2 2007-02-12 09:48:46 -08:00
ocfs1_fs_compat.h
ocfs2.h ocfs2: Fix some casting errors related to file writes 2007-08-09 17:25:27 -07:00
ocfs2_fs.h ocfs2: Support xfs style space reservation ioctls 2007-07-10 17:32:09 -07:00
ocfs2_lockid.h ocfs2: Remove delete inode vote 2007-04-26 14:39:48 -07:00
slot_map.c ocfs2: Add "preferred slot" mount option 2007-07-10 17:19:54 -07:00
slot_map.h
suballoc.c ocfs2: Allow smaller allocations during large writes 2007-09-20 15:06:09 -07:00
suballoc.h ocfs2: Allow smaller allocations during large writes 2007-09-20 15:06:09 -07:00
super.c [PATCH] ocfs2: fix mount option parsing 2007-09-11 11:38:48 -07:00
super.h ocfs2: use s_maxbytes directly in ocfs2_change_file_space() 2007-08-09 17:25:07 -07:00
symlink.c mm: make read_cache_page synchronous 2007-05-07 12:12:51 -07:00
symlink.h [PATCH] mark struct inode_operations const 2 2007-02-12 09:48:46 -08:00
sysfile.c ocfs2: Remove i_generation from inode lock names 2006-09-24 13:50:46 -07:00
sysfile.h
uptodate.c mm: Remove slab destructors from kmem_cache_create(). 2007-07-20 10:11:58 +09:00
uptodate.h ocfs2: implement directory read-ahead 2006-09-20 15:53:40 -07:00
ver.c
ver.h
vote.c header cleaning: don't include smp_lock.h when not used 2007-05-08 11:15:07 -07:00
vote.h ocfs2: remove unused code 2007-04-26 14:40:16 -07:00