diff options
| -rw-r--r-- | fs/ext4/ext4.h | 9 | ||||
| -rw-r--r-- | fs/ext4/extents.c | 5 | ||||
| -rw-r--r-- | fs/ext4/file.c | 3 | ||||
| -rw-r--r-- | fs/ext4/inode.c | 2 | ||||
| -rw-r--r-- | fs/ext4/mballoc.c | 4 | ||||
| -rw-r--r-- | fs/ext4/super.c | 19 | 
6 files changed, 24 insertions, 18 deletions
diff --git a/fs/ext4/ext4.h b/fs/ext4/ext4.h index 558545d1fea..5125c1f6e7e 100644 --- a/fs/ext4/ext4.h +++ b/fs/ext4/ext4.h @@ -727,11 +727,11 @@ static inline int ext4_valid_inum(struct super_block *sb, unsigned long ino)   */  #define EXT4_HAS_COMPAT_FEATURE(sb,mask)			\ -	(EXT4_SB(sb)->s_es->s_feature_compat & cpu_to_le32(mask)) +	((EXT4_SB(sb)->s_es->s_feature_compat & cpu_to_le32(mask)) != 0)  #define EXT4_HAS_RO_COMPAT_FEATURE(sb,mask)			\ -	(EXT4_SB(sb)->s_es->s_feature_ro_compat & cpu_to_le32(mask)) +	((EXT4_SB(sb)->s_es->s_feature_ro_compat & cpu_to_le32(mask)) != 0)  #define EXT4_HAS_INCOMPAT_FEATURE(sb,mask)			\ -	(EXT4_SB(sb)->s_es->s_feature_incompat & cpu_to_le32(mask)) +	((EXT4_SB(sb)->s_es->s_feature_incompat & cpu_to_le32(mask)) != 0)  #define EXT4_SET_COMPAT_FEATURE(sb,mask)			\  	EXT4_SB(sb)->s_es->s_feature_compat |= cpu_to_le32(mask)  #define EXT4_SET_RO_COMPAT_FEATURE(sb,mask)			\ @@ -1286,6 +1286,9 @@ extern int ext4_get_blocks_wrap(handle_t *handle, struct inode *inode,  			sector_t block, unsigned int max_blocks,  			struct buffer_head *bh, int create,  			int extend_disksize, int flag); +extern int ext4_fiemap(struct inode *inode, struct fiemap_extent_info *fieinfo, +			__u64 start, __u64 len); +  #endif	/* __KERNEL__ */  #endif	/* _EXT4_H */ diff --git a/fs/ext4/extents.c b/fs/ext4/extents.c index b92cb60737b..c64080e4949 100644 --- a/fs/ext4/extents.c +++ b/fs/ext4/extents.c @@ -3080,7 +3080,7 @@ retry:  /*   * Callback function called for each extent to gather FIEMAP information.   */ -int ext4_ext_fiemap_cb(struct inode *inode, struct ext4_ext_path *path, +static int ext4_ext_fiemap_cb(struct inode *inode, struct ext4_ext_path *path,  		       struct ext4_ext_cache *newex, struct ext4_extent *ex,  		       void *data)  { @@ -3149,7 +3149,8 @@ int ext4_ext_fiemap_cb(struct inode *inode, struct ext4_ext_path *path,  /* fiemap flags we can handle specified here */  #define EXT4_FIEMAP_FLAGS	(FIEMAP_FLAG_SYNC|FIEMAP_FLAG_XATTR) -int ext4_xattr_fiemap(struct inode *inode, struct fiemap_extent_info *fieinfo) +static int ext4_xattr_fiemap(struct inode *inode, +				struct fiemap_extent_info *fieinfo)  {  	__u64 physical = 0;  	__u64 length; diff --git a/fs/ext4/file.c b/fs/ext4/file.c index 6bd11fba71f..f731cb545a0 100644 --- a/fs/ext4/file.c +++ b/fs/ext4/file.c @@ -140,9 +140,6 @@ static int ext4_file_mmap(struct file *file, struct vm_area_struct *vma)  	return 0;  } -extern int ext4_fiemap(struct inode *inode, struct fiemap_extent_info *fieinfo, -		__u64 start, __u64 len); -  const struct file_operations ext4_file_operations = {  	.llseek		= generic_file_llseek,  	.read		= do_sync_read, diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c index 91e06f88f08..bcd5ffa76c0 100644 --- a/fs/ext4/inode.c +++ b/fs/ext4/inode.c @@ -3907,7 +3907,7 @@ static int __ext4_get_inode_loc(struct inode *inode,  	ext4_fsblk_t		block;  	int			inodes_per_block, inode_offset; -	iloc->bh = 0; +	iloc->bh = NULL;  	if (!ext4_valid_inum(sb, inode->i_ino))  		return -EIO; diff --git a/fs/ext4/mballoc.c b/fs/ext4/mballoc.c index 1d78435ce38..edf9730ba72 100644 --- a/fs/ext4/mballoc.c +++ b/fs/ext4/mballoc.c @@ -1056,6 +1056,8 @@ static void mb_set_bits(spinlock_t *lock, void *bm, int cur, int len)  static void mb_free_blocks(struct inode *inode, struct ext4_buddy *e4b,  			  int first, int count) +__releases(bitlock) +__acquires(bitlock)  {  	int block = 0;  	int max = 0; @@ -2244,7 +2246,7 @@ ext4_mb_store_history(struct ext4_allocation_context *ac)  /* Create and initialize ext4_group_info data for the given group. */ -int ext4_mb_add_groupinfo(struct super_block *sb, ext4_group_t group, +static int ext4_mb_add_groupinfo(struct super_block *sb, ext4_group_t group,  			  struct ext4_group_desc *desc)  {  	int i, len; diff --git a/fs/ext4/super.c b/fs/ext4/super.c index 8fa57be5040..a9dd1170bfe 100644 --- a/fs/ext4/super.c +++ b/fs/ext4/super.c @@ -1924,7 +1924,7 @@ static int ext4_fill_super(struct super_block *sb, void *data, int silent)  	int db_count;  	int i;  	int needs_recovery, has_huge_files; -	__le32 features; +	int features;  	__u64 blocks_count;  	int err; @@ -2056,15 +2056,17 @@ static int ext4_fill_super(struct super_block *sb, void *data, int silent)  	features = EXT4_HAS_INCOMPAT_FEATURE(sb, ~EXT4_FEATURE_INCOMPAT_SUPP);  	if (features) {  		printk(KERN_ERR "EXT4-fs: %s: couldn't mount because of " -		       "unsupported optional features (%x).\n", -		       sb->s_id, le32_to_cpu(features)); +		       "unsupported optional features (%x).\n", sb->s_id, +			(le32_to_cpu(EXT4_SB(sb)->s_es->s_feature_incompat) & +			~EXT4_FEATURE_INCOMPAT_SUPP));  		goto failed_mount;  	}  	features = EXT4_HAS_RO_COMPAT_FEATURE(sb, ~EXT4_FEATURE_RO_COMPAT_SUPP);  	if (!(sb->s_flags & MS_RDONLY) && features) {  		printk(KERN_ERR "EXT4-fs: %s: couldn't mount RDWR because of " -		       "unsupported optional features (%x).\n", -		       sb->s_id, le32_to_cpu(features)); +		       "unsupported optional features (%x).\n", sb->s_id, +			(le32_to_cpu(EXT4_SB(sb)->s_es->s_feature_ro_compat) & +			~EXT4_FEATURE_RO_COMPAT_SUPP));  		goto failed_mount;  	}  	has_huge_files = EXT4_HAS_RO_COMPAT_FEATURE(sb, @@ -3131,13 +3133,14 @@ static int ext4_remount(struct super_block *sb, int *flags, char *data)  				lock_super(sb);  			}  		} else { -			__le32 ret; +			int ret;  			if ((ret = EXT4_HAS_RO_COMPAT_FEATURE(sb,  					~EXT4_FEATURE_RO_COMPAT_SUPP))) {  				printk(KERN_WARNING "EXT4-fs: %s: couldn't "  				       "remount RDWR because of unsupported " -				       "optional features (%x).\n", -				       sb->s_id, le32_to_cpu(ret)); +				       "optional features (%x).\n", sb->s_id, +				(le32_to_cpu(sbi->s_es->s_feature_ro_compat) & +					~EXT4_FEATURE_RO_COMPAT_SUPP));  				err = -EROFS;  				goto restore_opts;  			}  | 
