Login
[x]
Log in using an account from:
Fedora Account System
Red Hat Associate
Red Hat Customer
Or login using a Red Hat Bugzilla account
Forgot Password
Login:
Hide Forgot
Create an Account
Red Hat Bugzilla – Attachment 160552 Details for
Bug 243490
grub fails on FS with 512-byte inodes
[?]
New
Simple Search
Advanced Search
My Links
Browse
Requests
Reports
Current State
Search
Tabular reports
Graphical reports
Duplicates
Other Reports
User Changes
Plotly Reports
Bug Status
Bug Severity
Non-Defaults
|
Product Dashboard
Help
Page Help!
Bug Writing Guidelines
What's new
Browser Support Policy
5.0.4.rh83 Release notes
FAQ
Guides index
User guide
Web Services
Contact
Legal
This site requires JavaScript to be enabled to function correctly, please enable it.
[patch]
untested patch
ext2_big_inodes (text/plain), 4.35 KB, created by
Eric Sandeen
on 2007-08-02 21:23:15 UTC
(
hide
)
Description:
untested patch
Filename:
MIME Type:
Creator:
Eric Sandeen
Created:
2007-08-02 21:23:15 UTC
Size:
4.35 KB
patch
obsolete
>Index: grub-0.97/stage2/fsys_ext2fs.c >=================================================================== >--- grub-0.97.orig/stage2/fsys_ext2fs.c >+++ grub-0.97/stage2/fsys_ext2fs.c >@@ -79,7 +79,52 @@ struct ext2_super_block > __u32 s_rev_level; /* Revision level */ > __u16 s_def_resuid; /* Default uid for reserved blocks */ > __u16 s_def_resgid; /* Default gid for reserved blocks */ >- __u32 s_reserved[235]; /* Padding to the end of the block */ >+ /* >+ * These fields are for EXT2_DYNAMIC_REV superblocks only. >+ * >+ * Note: the difference between the compatible feature set and >+ * the incompatible feature set is that if there is a bit set >+ * in the incompatible feature set that the kernel doesn't >+ * know about, it should refuse to mount the filesystem. >+ * >+ * e2fsck's requirements are more strict; if it doesn't know >+ * about a feature in either the compatible or incompatible >+ * feature set, it must abort and not try to meddle with >+ * things it doesn't understand... >+ */ >+ __u32 s_first_ino; /* First non-reserved inode */ >+ __u16 s_inode_size; /* size of inode structure */ >+ __u16 s_block_group_nr; /* block group # of this superblock */ >+ __u32 s_feature_compat; /* compatible feature set */ >+ __u32 s_feature_incompat; /* incompatible feature set */ >+ __u32 s_feature_ro_compat; /* readonly-compatible feature set */ >+ __u8 s_uuid[16]; /* 128-bit uuid for volume */ >+ char s_volume_name[16]; /* volume name */ >+ char s_last_mounted[64]; /* directory where last mounted */ >+ __u32 s_algorithm_usage_bitmap; /* For compression */ >+ /* >+ * Performance hints. Directory preallocation should only >+ * happen if the EXT2_FEATURE_COMPAT_DIR_PREALLOC flag is on. >+ */ >+ __u8 s_prealloc_blocks; /* Nr of blocks to try to preallocate*/ >+ __u8 s_prealloc_dir_blocks; /* Nr to preallocate for dirs */ >+ __u16 s_reserved_gdt_blocks;/* Per group table for online growth */ >+ /* >+ * Journaling support valid if EXT2_FEATURE_COMPAT_HAS_JOURNAL set. >+ */ >+ __u8 s_journal_uuid[16]; /* uuid of journal superblock */ >+ __u32 s_journal_inum; /* inode number of journal file */ >+ __u32 s_journal_dev; /* device number of journal file */ >+ __u32 s_last_orphan; /* start of list of inodes to delete */ >+ __u32 s_hash_seed[4]; /* HTREE hash seed */ >+ __u8 s_def_hash_version; /* Default hash version to use */ >+ __u8 s_jnl_backup_type; /* Default type of journal backup */ >+ __u16 s_reserved_word_pad; >+ __u32 s_default_mount_opts; >+ __u32 s_first_meta_bg; /* First metablock group */ >+ __u32 s_mkfs_time; /* When the filesystem was created */ >+ __u32 s_jnl_blocks[17]; /* Backup of the journal inode */ >+ __u32 s_reserved[172]; /* Padding to the end of the block */ > }; > > struct ext2_group_desc >@@ -218,6 +263,9 @@ struct ext2_dir_entry > #define EXT2_ADDR_PER_BLOCK(s) (EXT2_BLOCK_SIZE(s) / sizeof (__u32)) > #define EXT2_ADDR_PER_BLOCK_BITS(s) (log2(EXT2_ADDR_PER_BLOCK(s))) > >+#define EXT2_INODE_SIZE(s) (SUPERBLOCK->s_inode_size) >+#define EXT2_INODES_PER_BLOCK(s) (EXT2_BLOCK_SIZE(s)/EXT2_INODE_SIZE(s)) >+ > /* linux/ext2_fs.h */ > #define EXT2_BLOCK_SIZE_BITS(s) ((s)->s_log_block_size + 10) > /* kind of from ext2/super.c */ >@@ -553,7 +601,7 @@ ext2fs_dir (char *dirname) > gdp = GROUP_DESC; > ino_blk = gdp[desc].bg_inode_table + > (((current_ino - 1) % (SUPERBLOCK->s_inodes_per_group)) >- >> log2 (EXT2_BLOCK_SIZE (SUPERBLOCK) / sizeof (struct ext2_inode))); >+ >> log2 (EXT2_INODES_PER_BLOCK (SUPERBLOCK))); > #ifdef E2DEBUG > printf ("inode table fsblock=%d\n", ino_blk); > #endif /* E2DEBUG */ >@@ -566,12 +614,10 @@ ext2fs_dir (char *dirname) > mapblock2 = mapblock1 = -1; > > raw_inode = INODE + >- ((current_ino - 1) >- & (EXT2_BLOCK_SIZE (SUPERBLOCK) / sizeof (struct ext2_inode) - 1)); >+ ((current_ino - 1) & (EXT2_INODES_PER_BLOCK (SUPERBLOCK) - 1)); > #ifdef E2DEBUG > printf ("ipb=%d, sizeof(inode)=%d\n", >- (EXT2_BLOCK_SIZE (SUPERBLOCK) / sizeof (struct ext2_inode)), >- sizeof (struct ext2_inode)); >+ EXT2_INODES_PER_BLOCK (SUPERBLOCK), EXT2_INODE_SIZE (SUPERBLOCK)); > printf ("inode=%x, raw_inode=%x\n", INODE, raw_inode); > printf ("offset into inode table block=%d\n", (int) raw_inode - (int) INODE); > for (i = (unsigned char *) INODE; i <= (unsigned char *) raw_inode;
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 243490
: 160552