summaryrefslogtreecommitdiff
path: root/lib/ext2fs
diff options
context:
space:
mode:
authorAndreas Dilger <adilger@clusterfs.com>2002-05-16 03:20:07 -0600
committerAndreas Dilger <adilger@clusterfs.com>2002-05-16 03:20:07 -0600
commit932a489cdf6bc83d69e59d3f8e0a57b733799ce1 (patch)
tree47c7785dbe06875da0942ef42ad984dfbcb00616 /lib/ext2fs
parent5e941d2979aeab97929de6c0682425dead3bae74 (diff)
downloade2fsprogs-932a489cdf6bc83d69e59d3f8e0a57b733799ce1.tar.gz
Add support for creating and checking 8192-byte blocksize filesystems.
We complain if you try to create such a filesystem on a system with 4096 byte PAGE_SIZE. Add checks for valid inode size for undocumented -I option.
Diffstat (limited to 'lib/ext2fs')
-rw-r--r--lib/ext2fs/ext2_fs.h13
-rw-r--r--lib/ext2fs/initialize.c4
2 files changed, 9 insertions, 8 deletions
diff --git a/lib/ext2fs/ext2_fs.h b/lib/ext2fs/ext2_fs.h
index 11439654..b4d5ae69 100644
--- a/lib/ext2fs/ext2_fs.h
+++ b/lib/ext2fs/ext2_fs.h
@@ -67,9 +67,10 @@
/*
* Macro-instructions used to manage several block sizes
*/
-#define EXT2_MIN_BLOCK_SIZE 1024
-#define EXT2_MAX_BLOCK_SIZE 4096
-#define EXT2_MIN_BLOCK_LOG_SIZE 10
+#define EXT2_MIN_BLOCK_LOG_SIZE 10 /* 1024 */
+#define EXT2_MAX_BLOCK_LOG_SIZE 13 /* 8192 */
+#define EXT2_MIN_BLOCK_SIZE (1 << EXT2_MIN_BLOCK_LOG_SIZE)
+#define EXT2_MAX_BLOCK_SIZE (1 << EXT2_MAX_BLOCK_LOG_SIZE)
#ifdef __KERNEL__
# define EXT2_BLOCK_SIZE(s) ((s)->s_blocksize)
#else
@@ -98,9 +99,9 @@
/*
* Macro-instructions used to manage fragments
*/
-#define EXT2_MIN_FRAG_SIZE 1024
-#define EXT2_MAX_FRAG_SIZE 4096
-#define EXT2_MIN_FRAG_LOG_SIZE 10
+#define EXT2_MIN_FRAG_SIZE EXT2_MIN_BLOCK_SIZE
+#define EXT2_MAX_FRAG_SIZE EXT2_MAX_BLOCK_SIZE
+#define EXT2_MIN_FRAG_LOG_SIZE EXT2_MIN_BLOCK_LOG_SIZE
#ifdef __KERNEL__
# define EXT2_FRAG_SIZE(s) ((s)->u.ext2_sb.s_frag_size)
# define EXT2_FRAGS_PER_BLOCK(s) ((s)->u.ext2_sb.s_frags_per_block)
diff --git a/lib/ext2fs/initialize.c b/lib/ext2fs/initialize.c
index d8fa2289..bf64c683 100644
--- a/lib/ext2fs/initialize.c
+++ b/lib/ext2fs/initialize.c
@@ -166,8 +166,8 @@ retry:
EXT2_DESC_PER_BLOCK(super) - 1)
/ EXT2_DESC_PER_BLOCK(super);
- /* n.b., fs->blocksize is <= 4096 */
- set_field(s_inodes_count, super->s_blocks_count/(4096/fs->blocksize));
+ i = fs->blocksize >= 4096 ? 1 : 4096 / fs->blocksize;
+ set_field(s_inodes_count, super->s_blocks_count / i);
/*
* Make sure we have at least EXT2_FIRST_INO + 1 inodes, so