Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

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
Loading
Loading
Loading
Loading
+0 −5
Original line number Original line Diff line number Diff line
@@ -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;
+0 −10
Original line number Original line Diff line number Diff line
@@ -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,
	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 =
+0 −15
Original line number Original line Diff line number Diff line
@@ -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)
	} 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)
			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",
+6 −29
Original line number Original line Diff line number Diff line
@@ -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 {
	__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 { \


#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 { \
#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 { \
#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 {
/*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 */
+0 −5
Original line number Original line Diff line number Diff line
@@ -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;
Loading