alistair23-linux/fs/ocfs2
Joel Becker 1187c96885 ocfs2: Limit inode allocation to 32bits.
ocfs2 inode numbers are block numbers.  For any filesystem with less
than 2^32 blocks, this is not a problem.  However, when ocfs2 starts
using JDB2, it will be able to support filesystems with more than 2^32
blocks.  This would result in inode numbers higher than 2^32.

The problem is that stat(2) can't handle those numbers on 32bit
machines.  The simple solution is to have ocfs2 allocate all inodes
below that boundary.

The suballoc code is changed to honor an optional block limit.  Only the
inode suballocator sets that limit - all other allocations stay unlimited.

The biggest trick is to grow the inode suballocator beneath that limit.
There's no point in allocating block groups that are above the limit,
then rejecting their elements later on.  We want to prevent the inode
allocator from ever having block groups above the limit.  This involves
a little gyration with the local alloc code.  If the local alloc window
is above the limit, it signals the caller to try the global bitmap but
does not disable the local alloc file (which can be used for other
allocations).

[ Minor cleanup - removed an ML_NOTICE comment. --Mark ]

Signed-off-by: Joel Becker <joel.becker@oracle.com>
Signed-off-by: Mark Fasheh <mfasheh@suse.com>
2008-10-13 16:57:07 -07:00
..
cluster ocfs2: Add extent tree operation for xattr value btrees 2008-10-13 16:57:01 -07:00
dlm SL*B: drop kmem cache argument from constructor 2008-07-26 12:00:07 -07:00
alloc.c ocfs2: Change ocfs2_get_*_extent_tree() to ocfs2_init_*_extent_tree() 2008-10-13 16:57:05 -07:00
alloc.h ocfs2: Change ocfs2_get_*_extent_tree() to ocfs2_init_*_extent_tree() 2008-10-13 16:57:05 -07:00
aops.c ocfs2: Change ocfs2_get_*_extent_tree() to ocfs2_init_*_extent_tree() 2008-10-13 16:57:05 -07:00
aops.h ocfs2: convert to new aops 2007-10-16 09:42:58 -07:00
buffer_head_io.c ocfs2: clean up bh null checks 2008-01-25 15:05:48 -08:00
buffer_head_io.h [PATCH 1/2] ocfs2: Add group extend for online resize 2008-01-25 14:53:35 -08:00
dcache.c ocfs2: Remove mount/unmount votes 2008-01-25 14:45:34 -08: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: Change ocfs2_get_*_extent_tree() to ocfs2_init_*_extent_tree() 2008-10-13 16:57:05 -07:00
dir.h ocfs2: Rename cleanups 2007-10-12 11:54:38 -07:00
dlmglue.c ocfs2: fix printk format warnings with OCFS2_FS_STATS=n 2008-07-14 13:57:14 -07:00
dlmglue.h ocfs2: Break out stackglue into modules. 2008-04-18 08:56:05 -07:00
export.c ocfs2: Silence false lockdep warnings 2008-01-25 15:05:44 -08:00
export.h exportfs: make struct export_operations const 2007-10-22 08:13:21 -07:00
extent_map.c ocfs2: Add extent tree operation for xattr value btrees 2008-10-13 16:57:01 -07:00
extent_map.h ocfs2: Add extent tree operation for xattr value btrees 2008-10-13 16:57:01 -07:00
file.c ocfs2: Change ocfs2_get_*_extent_tree() to ocfs2_init_*_extent_tree() 2008-10-13 16:57:05 -07:00
file.h ocfs2: Make high level btree extend code generic 2008-10-13 13:57:59 -07:00
heartbeat.c ocfs2: Move o2hb functionality into the stack glue. 2008-04-18 08:56:04 -07:00
heartbeat.h ocfs2: Move o2hb functionality into the stack glue. 2008-04-18 08:56:04 -07:00
inode.c ocfs2: Add extended attribute support 2008-10-13 16:57:02 -07:00
inode.h ocfs2: Add extended attribute support 2008-10-13 16:57:02 -07:00
ioctl.c [PATCH] r/o bind mounts: elevate write count for ioctls() 2008-04-19 00:29:24 -04:00
ioctl.h ocfs2: Convert ocfs2 over to unlocked_ioctl 2008-04-18 08:56:11 -07:00
journal.c ocfs2: Fix sleep-with-spinlock recovery regression 2008-08-22 11:08:38 -07:00
journal.h ocfs2: Add extended attribute support 2008-10-13 16:57:02 -07:00
localalloc.c ocfs2: Limit inode allocation to 32bits. 2008-10-13 16:57:07 -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 ocfs2: Add extended attribute support 2008-10-13 16:57:02 -07:00
mmap.c ocfs2: Rename ocfs2_meta_[un]lock 2008-01-25 14:46:01 -08:00
mmap.h [PATCH] OCFS2: The Second Oracle Cluster Filesystem 2006-01-03 11:45:47 -08:00
namei.c ocfs2: Add extended attribute support 2008-10-13 16:57:02 -07:00
namei.h ocfs2: Move directory manipulation code into dir.c 2007-10-12 11:54:36 -07:00
ocfs1_fs_compat.h fs/: Spelling fixes 2008-02-03 17:33:42 +02:00
ocfs2.h ocfs2: Add incompatible flag for extended attribute 2008-10-13 16:57:03 -07:00
ocfs2_fs.h ocfs2: Add incompatible flag for extended attribute 2008-10-13 16:57:03 -07:00
ocfs2_lockid.h ocfs2: Change mlog_bug_on to BUG_ON in ocfs2_lockid.h 2008-04-18 08:56:07 -07:00
ocfs2_lockingver.h ocfs2: Negotiate locking protocol versions. 2008-02-06 16:11:29 -08:00
resize.c ocfs2: Fix an endian bug in online resize. 2008-03-10 15:14:07 -07:00
resize.h [PATCH 2/2] ocfs2: Implement group add for online resize 2008-01-25 15:04:24 -08:00
slot_map.c ocfs2: Abstract out node number queries. 2008-04-18 08:56:04 -07:00
slot_map.h ocfs2: De-magic the in-memory slot map. 2008-04-18 08:56:03 -07:00
stack_o2cb.c ocfs2: Remove ->hangup() from stack glue operations. 2008-06-16 10:46:52 -07:00
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: Limit inode allocation to 32bits. 2008-10-13 16:57:07 -07:00
suballoc.h ocfs2: Limit inode allocation to 32bits. 2008-10-13 16:57:07 -07:00
super.c ocfs2: Add incompatible flag for extended attribute 2008-10-13 16:57:03 -07:00
super.h ocfs2: use s_maxbytes directly in ocfs2_change_file_space() 2007-08-09 17:25:07 -07:00
symlink.c ocfs2: Add extended attribute support 2008-10-13 16:57:02 -07:00
symlink.h [PATCH] mark struct inode_operations const 2 2007-02-12 09:48:46 -08:00
sysfile.c ocfs2: Silence false lockdep warnings 2008-01-25 15:05:44 -08:00
sysfile.h [PATCH] OCFS2: The Second Oracle Cluster Filesystem 2006-01-03 11:45:47 -08:00
uptodate.c ocfs2: Add helper function in uptodate.c for removing xattr clusters 2008-10-13 13:57:59 -07:00
uptodate.h ocfs2: Add helper function in uptodate.c for removing xattr clusters 2008-10-13 13:57:59 -07:00
ver.c ocfs2: bump version number 2008-01-25 15:05:46 -08:00
ver.h [PATCH] OCFS2: The Second Oracle Cluster Filesystem 2006-01-03 11:45:47 -08:00
xattr.c ocfs2: Resolve deadlock in ocfs2_xattr_free_block. 2008-10-13 16:57:06 -07:00
xattr.h ocfs2: Enable xattr set in index btree 2008-10-13 16:57:03 -07:00
xattr_trusted.c ocfs2: Add extended attribute support 2008-10-13 16:57:02 -07:00
xattr_user.c ocfs2: Add extended attribute support 2008-10-13 16:57:02 -07:00