Commit f077d0d7 authored by Coly Li's avatar Coly Li Committed by Theodore Ts'o

ext4: Remove (partial, never completed) fragment support

Fragment support in ext2/3/4 was never implemented, and it probably will
never be implemented.   So remove it from ext4.
Signed-off-by: default avatarColy Li <coyli@suse.de>
Acked-by: default avatarAndreas Dilger <adilger@clusterfs.com>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatar"Theodore Ts'o" <tytso@mit.edu>
parent 6f38c74f
...@@ -573,11 +573,6 @@ struct inode *ext4_new_inode(handle_t *handle, struct inode * dir, int mode) ...@@ -573,11 +573,6 @@ struct inode *ext4_new_inode(handle_t *handle, struct inode * dir, int mode)
/* dirsync only applies to directories */ /* dirsync only applies to directories */
if (!S_ISDIR(mode)) if (!S_ISDIR(mode))
ei->i_flags &= ~EXT4_DIRSYNC_FL; ei->i_flags &= ~EXT4_DIRSYNC_FL;
#ifdef EXT4_FRAGMENTS
ei->i_faddr = 0;
ei->i_frag_no = 0;
ei->i_frag_size = 0;
#endif
ei->i_file_acl = 0; ei->i_file_acl = 0;
ei->i_dir_acl = 0; ei->i_dir_acl = 0;
ei->i_dtime = 0; ei->i_dtime = 0;
......
...@@ -2711,11 +2711,6 @@ void ext4_read_inode(struct inode * inode) ...@@ -2711,11 +2711,6 @@ void ext4_read_inode(struct inode * inode)
} }
inode->i_blocks = le32_to_cpu(raw_inode->i_blocks); inode->i_blocks = le32_to_cpu(raw_inode->i_blocks);
ei->i_flags = le32_to_cpu(raw_inode->i_flags); ei->i_flags = le32_to_cpu(raw_inode->i_flags);
#ifdef EXT4_FRAGMENTS
ei->i_faddr = le32_to_cpu(raw_inode->i_faddr);
ei->i_frag_no = raw_inode->i_frag;
ei->i_frag_size = raw_inode->i_fsize;
#endif
ei->i_file_acl = le32_to_cpu(raw_inode->i_file_acl); ei->i_file_acl = le32_to_cpu(raw_inode->i_file_acl);
if (EXT4_SB(inode->i_sb)->s_es->s_creator_os != if (EXT4_SB(inode->i_sb)->s_es->s_creator_os !=
cpu_to_le32(EXT4_OS_HURD)) cpu_to_le32(EXT4_OS_HURD))
...@@ -2860,11 +2855,6 @@ static int ext4_do_update_inode(handle_t *handle, ...@@ -2860,11 +2855,6 @@ static int ext4_do_update_inode(handle_t *handle,
raw_inode->i_blocks = cpu_to_le32(inode->i_blocks); raw_inode->i_blocks = cpu_to_le32(inode->i_blocks);
raw_inode->i_dtime = cpu_to_le32(ei->i_dtime); raw_inode->i_dtime = cpu_to_le32(ei->i_dtime);
raw_inode->i_flags = cpu_to_le32(ei->i_flags); raw_inode->i_flags = cpu_to_le32(ei->i_flags);
#ifdef EXT4_FRAGMENTS
raw_inode->i_faddr = cpu_to_le32(ei->i_faddr);
raw_inode->i_frag = ei->i_frag_no;
raw_inode->i_fsize = ei->i_frag_size;
#endif
if (EXT4_SB(inode->i_sb)->s_es->s_creator_os != if (EXT4_SB(inode->i_sb)->s_es->s_creator_os !=
cpu_to_le32(EXT4_OS_HURD)) cpu_to_le32(EXT4_OS_HURD))
raw_inode->i_file_acl_high = raw_inode->i_file_acl_high =
......
...@@ -1726,14 +1726,6 @@ static int ext4_fill_super (struct super_block *sb, void *data, int silent) ...@@ -1726,14 +1726,6 @@ static int ext4_fill_super (struct super_block *sb, void *data, int silent)
if (sbi->s_inode_size > EXT4_GOOD_OLD_INODE_SIZE) if (sbi->s_inode_size > EXT4_GOOD_OLD_INODE_SIZE)
sb->s_time_gran = 1 << (EXT4_EPOCH_BITS - 2); sb->s_time_gran = 1 << (EXT4_EPOCH_BITS - 2);
} }
sbi->s_frag_size = EXT4_MIN_FRAG_SIZE <<
le32_to_cpu(es->s_log_frag_size);
if (blocksize != sbi->s_frag_size) {
printk(KERN_ERR
"EXT4-fs: fragsize %lu != blocksize %u (unsupported)\n",
sbi->s_frag_size, blocksize);
goto failed_mount;
}
sbi->s_desc_size = le16_to_cpu(es->s_desc_size); sbi->s_desc_size = le16_to_cpu(es->s_desc_size);
if (EXT4_HAS_INCOMPAT_FEATURE(sb, EXT4_FEATURE_INCOMPAT_64BIT)) { if (EXT4_HAS_INCOMPAT_FEATURE(sb, EXT4_FEATURE_INCOMPAT_64BIT)) {
if (sbi->s_desc_size < EXT4_MIN_DESC_SIZE_64BIT || if (sbi->s_desc_size < EXT4_MIN_DESC_SIZE_64BIT ||
...@@ -1747,7 +1739,6 @@ static int ext4_fill_super (struct super_block *sb, void *data, int silent) ...@@ -1747,7 +1739,6 @@ static int ext4_fill_super (struct super_block *sb, void *data, int silent)
} else } else
sbi->s_desc_size = EXT4_MIN_DESC_SIZE; sbi->s_desc_size = EXT4_MIN_DESC_SIZE;
sbi->s_blocks_per_group = le32_to_cpu(es->s_blocks_per_group); sbi->s_blocks_per_group = le32_to_cpu(es->s_blocks_per_group);
sbi->s_frags_per_group = le32_to_cpu(es->s_frags_per_group);
sbi->s_inodes_per_group = le32_to_cpu(es->s_inodes_per_group); sbi->s_inodes_per_group = le32_to_cpu(es->s_inodes_per_group);
if (EXT4_INODE_SIZE(sb) == 0) if (EXT4_INODE_SIZE(sb) == 0)
goto cantfind_ext4; goto cantfind_ext4;
...@@ -1771,12 +1762,6 @@ static int ext4_fill_super (struct super_block *sb, void *data, int silent) ...@@ -1771,12 +1762,6 @@ static int ext4_fill_super (struct super_block *sb, void *data, int silent)
sbi->s_blocks_per_group); sbi->s_blocks_per_group);
goto failed_mount; goto failed_mount;
} }
if (sbi->s_frags_per_group > blocksize * 8) {
printk (KERN_ERR
"EXT4-fs: #fragments per group too big: %lu\n",
sbi->s_frags_per_group);
goto failed_mount;
}
if (sbi->s_inodes_per_group > blocksize * 8) { if (sbi->s_inodes_per_group > blocksize * 8) {
printk (KERN_ERR printk (KERN_ERR
"EXT4-fs: #inodes per group too big: %lu\n", "EXT4-fs: #inodes per group too big: %lu\n",
......
...@@ -104,20 +104,6 @@ ...@@ -104,20 +104,6 @@
#endif #endif
#define EXT4_BLOCK_ALIGN(size, blkbits) ALIGN((size), (1 << (blkbits))) #define EXT4_BLOCK_ALIGN(size, blkbits) ALIGN((size), (1 << (blkbits)))
/*
* Macro-instructions used to manage fragments
*/
#define EXT4_MIN_FRAG_SIZE 1024
#define EXT4_MAX_FRAG_SIZE 4096
#define EXT4_MIN_FRAG_LOG_SIZE 10
#ifdef __KERNEL__
# define EXT4_FRAG_SIZE(s) (EXT4_SB(s)->s_frag_size)
# define EXT4_FRAGS_PER_BLOCK(s) (EXT4_SB(s)->s_frags_per_block)
#else
# define EXT4_FRAG_SIZE(s) (EXT4_MIN_FRAG_SIZE << (s)->s_log_frag_size)
# define EXT4_FRAGS_PER_BLOCK(s) (EXT4_BLOCK_SIZE(s) / EXT4_FRAG_SIZE(s))
#endif
/* /*
* Structure of a blocks group descriptor * Structure of a blocks group descriptor
*/ */
...@@ -311,27 +297,24 @@ struct ext4_inode { ...@@ -311,27 +297,24 @@ struct ext4_inode {
__le32 i_generation; /* File version (for NFS) */ __le32 i_generation; /* File version (for NFS) */
__le32 i_file_acl; /* File ACL */ __le32 i_file_acl; /* File ACL */
__le32 i_dir_acl; /* Directory ACL */ __le32 i_dir_acl; /* Directory ACL */
__le32 i_faddr; /* Fragment address */ __le32 i_obso_faddr; /* Obsoleted fragment address */
union { union {
struct { struct {
__u8 l_i_frag; /* Fragment number */ __le16 l_i_reserved1; /* Obsoleted fragment number/size which are removed in ext4 */
__u8 l_i_fsize; /* Fragment size */
__le16 l_i_file_acl_high; __le16 l_i_file_acl_high;
__le16 l_i_uid_high; /* these 2 fields */ __le16 l_i_uid_high; /* these 2 fields */
__le16 l_i_gid_high; /* were reserved2[0] */ __le16 l_i_gid_high; /* were reserved2[0] */
__u32 l_i_reserved2; __u32 l_i_reserved2;
} linux2; } linux2;
struct { struct {
__u8 h_i_frag; /* Fragment number */ __le16 h_i_reserved1; /* Obsoleted fragment number/size which are removed in ext4 */
__u8 h_i_fsize; /* Fragment size */
__u16 h_i_mode_high; __u16 h_i_mode_high;
__u16 h_i_uid_high; __u16 h_i_uid_high;
__u16 h_i_gid_high; __u16 h_i_gid_high;
__u32 h_i_author; __u32 h_i_author;
} hurd2; } hurd2;
struct { struct {
__u8 m_i_frag; /* Fragment number */ __le16 h_i_reserved1; /* Obsoleted fragment number/size which are removed in ext4 */
__u8 m_i_fsize; /* Fragment size */
__le16 m_i_file_acl_high; __le16 m_i_file_acl_high;
__u32 m_i_reserved2[2]; __u32 m_i_reserved2[2];
} masix2; } masix2;
...@@ -419,8 +402,6 @@ do { \ ...@@ -419,8 +402,6 @@ do { \
#if defined(__KERNEL__) || defined(__linux__) #if defined(__KERNEL__) || defined(__linux__)
#define i_reserved1 osd1.linux1.l_i_reserved1 #define i_reserved1 osd1.linux1.l_i_reserved1
#define i_frag osd2.linux2.l_i_frag
#define i_fsize osd2.linux2.l_i_fsize
#define i_file_acl_high osd2.linux2.l_i_file_acl_high #define i_file_acl_high osd2.linux2.l_i_file_acl_high
#define i_uid_low i_uid #define i_uid_low i_uid
#define i_gid_low i_gid #define i_gid_low i_gid
...@@ -431,8 +412,6 @@ do { \ ...@@ -431,8 +412,6 @@ do { \
#elif defined(__GNU__) #elif defined(__GNU__)
#define i_translator osd1.hurd1.h_i_translator #define i_translator osd1.hurd1.h_i_translator
#define i_frag osd2.hurd2.h_i_frag;
#define i_fsize osd2.hurd2.h_i_fsize;
#define i_uid_high osd2.hurd2.h_i_uid_high #define i_uid_high osd2.hurd2.h_i_uid_high
#define i_gid_high osd2.hurd2.h_i_gid_high #define i_gid_high osd2.hurd2.h_i_gid_high
#define i_author osd2.hurd2.h_i_author #define i_author osd2.hurd2.h_i_author
...@@ -440,8 +419,6 @@ do { \ ...@@ -440,8 +419,6 @@ do { \
#elif defined(__masix__) #elif defined(__masix__)
#define i_reserved1 osd1.masix1.m_i_reserved1 #define i_reserved1 osd1.masix1.m_i_reserved1
#define i_frag osd2.masix2.m_i_frag
#define i_fsize osd2.masix2.m_i_fsize
#define i_file_acl_high osd2.masix2.m_i_file_acl_high #define i_file_acl_high osd2.masix2.m_i_file_acl_high
#define i_reserved2 osd2.masix2.m_i_reserved2 #define i_reserved2 osd2.masix2.m_i_reserved2
...@@ -528,9 +505,9 @@ struct ext4_super_block { ...@@ -528,9 +505,9 @@ struct ext4_super_block {
/*10*/ __le32 s_free_inodes_count; /* Free inodes count */ /*10*/ __le32 s_free_inodes_count; /* Free inodes count */
__le32 s_first_data_block; /* First Data Block */ __le32 s_first_data_block; /* First Data Block */
__le32 s_log_block_size; /* Block size */ __le32 s_log_block_size; /* Block size */
__le32 s_log_frag_size; /* Fragment size */ __le32 s_obso_log_frag_size; /* Obsoleted fragment size */
/*20*/ __le32 s_blocks_per_group; /* # Blocks per group */ /*20*/ __le32 s_blocks_per_group; /* # Blocks per group */
__le32 s_frags_per_group; /* # Fragments per group */ __le32 s_obso_frags_per_group; /* Obsoleted fragments per group */
__le32 s_inodes_per_group; /* # Inodes per group */ __le32 s_inodes_per_group; /* # Inodes per group */
__le32 s_mtime; /* Mount time */ __le32 s_mtime; /* Mount time */
/*30*/ __le32 s_wtime; /* Write time */ /*30*/ __le32 s_wtime; /* Write time */
......
...@@ -78,11 +78,6 @@ struct ext4_ext_cache { ...@@ -78,11 +78,6 @@ struct ext4_ext_cache {
struct ext4_inode_info { struct ext4_inode_info {
__le32 i_data[15]; /* unconverted */ __le32 i_data[15]; /* unconverted */
__u32 i_flags; __u32 i_flags;
#ifdef EXT4_FRAGMENTS
__u32 i_faddr;
__u8 i_frag_no;
__u8 i_frag_size;
#endif
ext4_fsblk_t i_file_acl; ext4_fsblk_t i_file_acl;
__u32 i_dir_acl; __u32 i_dir_acl;
__u32 i_dtime; __u32 i_dtime;
......
...@@ -28,11 +28,8 @@ ...@@ -28,11 +28,8 @@
* third extended-fs super-block data in memory * third extended-fs super-block data in memory
*/ */
struct ext4_sb_info { struct ext4_sb_info {
unsigned long s_frag_size; /* Size of a fragment in bytes */
unsigned long s_desc_size; /* Size of a group descriptor in bytes */ unsigned long s_desc_size; /* Size of a group descriptor in bytes */
unsigned long s_frags_per_block;/* Number of fragments per block */
unsigned long s_inodes_per_block;/* Number of inodes per block */ unsigned long s_inodes_per_block;/* Number of inodes per block */
unsigned long s_frags_per_group;/* Number of fragments in a group */
unsigned long s_blocks_per_group;/* Number of blocks in a group */ unsigned long s_blocks_per_group;/* Number of blocks in a group */
unsigned long s_inodes_per_group;/* Number of inodes in a group */ unsigned long s_inodes_per_group;/* Number of inodes in a group */
unsigned long s_itb_per_group; /* Number of inode table blocks per group */ unsigned long s_itb_per_group; /* Number of inode table blocks per group */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment