diff options
Diffstat (limited to 'fs/ocfs2/localalloc.c')
| -rw-r--r-- | fs/ocfs2/localalloc.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/fs/ocfs2/localalloc.c b/fs/ocfs2/localalloc.c index 3d7419682dc0..ec6adbf8f551 100644 --- a/fs/ocfs2/localalloc.c +++ b/fs/ocfs2/localalloc.c | |||
| @@ -118,6 +118,7 @@ unsigned int ocfs2_la_default_mb(struct ocfs2_super *osb) | |||
| 118 | { | 118 | { |
| 119 | unsigned int la_mb; | 119 | unsigned int la_mb; |
| 120 | unsigned int gd_mb; | 120 | unsigned int gd_mb; |
| 121 | unsigned int la_max_mb; | ||
| 121 | unsigned int megs_per_slot; | 122 | unsigned int megs_per_slot; |
| 122 | struct super_block *sb = osb->sb; | 123 | struct super_block *sb = osb->sb; |
| 123 | 124 | ||
| @@ -182,6 +183,12 @@ unsigned int ocfs2_la_default_mb(struct ocfs2_super *osb) | |||
| 182 | if (megs_per_slot < la_mb) | 183 | if (megs_per_slot < la_mb) |
| 183 | la_mb = megs_per_slot; | 184 | la_mb = megs_per_slot; |
| 184 | 185 | ||
| 186 | /* We can't store more bits than we can in a block. */ | ||
| 187 | la_max_mb = ocfs2_clusters_to_megabytes(osb->sb, | ||
| 188 | ocfs2_local_alloc_size(sb) * 8); | ||
| 189 | if (la_mb > la_max_mb) | ||
| 190 | la_mb = la_max_mb; | ||
| 191 | |||
| 185 | return la_mb; | 192 | return la_mb; |
| 186 | } | 193 | } |
| 187 | 194 | ||
