ext4: Fallback to vmalloc if kmalloc can't allocate s_flex_groups array
authorTheodore Ts'o <tytso@mit.edu>
Tue, 28 Apr 2009 02:48:48 +0000 (22:48 -0400)
committerTheodore Ts'o <tytso@mit.edu>
Tue, 28 Apr 2009 02:48:48 +0000 (22:48 -0400)
commitc5ca7c7636fa689a9746b6032f83aa7fffec31c6
treeeebbdd1d477b5062148ee61c9e1bf1d4da3e9e05
parent29fa89d088941d79765d60f22d5ccdd6b8696e11
ext4: Fallback to vmalloc if kmalloc can't allocate s_flex_groups array

For very large filesystems, the s_flex_groups array can get quite big.
For example, a filesystem that can be resized up to 16TB will have
8192 flex groups (assuming the default flex_bg size of 16), so the
array is 96k, which is *very* marginal for kmalloc().  On the other
hand, a 160GB filesystem without the resize_inode feature will only
require 960 bytes.  So we try to allocate the array first using
kmalloc(), and if that fails, we'll try to use vmalloc() instead.

Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
fs/ext4/super.c