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

Commit e01799ac authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull ext2, udf, and quota update from Jan Kara:
 "Some ext2 cleanups, a fix for UDF crash on corrupted media, and one
  quota locking fix"

* tag 'fs_for_4.21-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs:
  quota: Lock s_umount in exclusive mode for Q_XQUOTA{ON,OFF} quotactls.
  udf: Fix BUG on corrupted inode
  ext2: change reusable parameter to true when calling mb_cache_entry_create()
  ext2: remove redundant condition check
  ext2: avoid unnecessary operation in ext2_error()
parents 4b0a383a 41c4f85c
Loading
Loading
Loading
Loading
+5 −7
Original line number Original line Diff line number Diff line
@@ -73,7 +73,7 @@ void ext2_error(struct super_block *sb, const char *function,


	if (test_opt(sb, ERRORS_PANIC))
	if (test_opt(sb, ERRORS_PANIC))
		panic("EXT2-fs: panic from previous error\n");
		panic("EXT2-fs: panic from previous error\n");
	if (test_opt(sb, ERRORS_RO)) {
	if (!sb_rdonly(sb) && test_opt(sb, ERRORS_RO)) {
		ext2_msg(sb, KERN_CRIT,
		ext2_msg(sb, KERN_CRIT,
			     "error: remounting filesystem read-only");
			     "error: remounting filesystem read-only");
		sb->s_flags |= SB_RDONLY;
		sb->s_flags |= SB_RDONLY;
@@ -148,10 +148,9 @@ static void ext2_put_super (struct super_block * sb)


	ext2_quota_off_umount(sb);
	ext2_quota_off_umount(sb);


	if (sbi->s_ea_block_cache) {
	ext2_xattr_destroy_cache(sbi->s_ea_block_cache);
	ext2_xattr_destroy_cache(sbi->s_ea_block_cache);
	sbi->s_ea_block_cache = NULL;
	sbi->s_ea_block_cache = NULL;
	}

	if (!sb_rdonly(sb)) {
	if (!sb_rdonly(sb)) {
		struct ext2_super_block *es = sbi->s_es;
		struct ext2_super_block *es = sbi->s_es;


@@ -1198,7 +1197,6 @@ static int ext2_fill_super(struct super_block *sb, void *data, int silent)
			sb->s_id);
			sb->s_id);
	goto failed_mount;
	goto failed_mount;
failed_mount3:
failed_mount3:
	if (sbi->s_ea_block_cache)
	ext2_xattr_destroy_cache(sbi->s_ea_block_cache);
	ext2_xattr_destroy_cache(sbi->s_ea_block_cache);
	percpu_counter_destroy(&sbi->s_freeblocks_counter);
	percpu_counter_destroy(&sbi->s_freeblocks_counter);
	percpu_counter_destroy(&sbi->s_freeinodes_counter);
	percpu_counter_destroy(&sbi->s_freeinodes_counter);
+2 −1
Original line number Original line Diff line number Diff line
@@ -835,7 +835,8 @@ ext2_xattr_cache_insert(struct mb_cache *cache, struct buffer_head *bh)
	__u32 hash = le32_to_cpu(HDR(bh)->h_hash);
	__u32 hash = le32_to_cpu(HDR(bh)->h_hash);
	int error;
	int error;


	error = mb_cache_entry_create(cache, GFP_NOFS, hash, bh->b_blocknr, 1);
	error = mb_cache_entry_create(cache, GFP_NOFS, hash, bh->b_blocknr,
				      true);
	if (error) {
	if (error) {
		if (error == -EBUSY) {
		if (error == -EBUSY) {
			ea_bdebug(bh, "already in cache (%d cache entries)",
			ea_bdebug(bh, "already in cache (%d cache entries)",
+2 −1
Original line number Original line Diff line number Diff line
@@ -791,7 +791,8 @@ static int quotactl_cmd_write(int cmd)
/* Return true if quotactl command is manipulating quota on/off state */
/* Return true if quotactl command is manipulating quota on/off state */
static bool quotactl_cmd_onoff(int cmd)
static bool quotactl_cmd_onoff(int cmd)
{
{
	return (cmd == Q_QUOTAON) || (cmd == Q_QUOTAOFF);
	return (cmd == Q_QUOTAON) || (cmd == Q_QUOTAOFF) ||
		 (cmd == Q_XQUOTAON) || (cmd == Q_XQUOTAOFF);
}
}


/*
/*
+6 −0
Original line number Original line Diff line number Diff line
@@ -1357,6 +1357,12 @@ static int udf_read_inode(struct inode *inode, bool hidden_inode)


	iinfo->i_alloc_type = le16_to_cpu(fe->icbTag.flags) &
	iinfo->i_alloc_type = le16_to_cpu(fe->icbTag.flags) &
							ICBTAG_FLAG_AD_MASK;
							ICBTAG_FLAG_AD_MASK;
	if (iinfo->i_alloc_type != ICBTAG_FLAG_AD_SHORT &&
	    iinfo->i_alloc_type != ICBTAG_FLAG_AD_LONG &&
	    iinfo->i_alloc_type != ICBTAG_FLAG_AD_IN_ICB) {
		ret = -EIO;
		goto out;
	}
	iinfo->i_unique = 0;
	iinfo->i_unique = 0;
	iinfo->i_lenEAttr = 0;
	iinfo->i_lenEAttr = 0;
	iinfo->i_lenExtents = 0;
	iinfo->i_lenExtents = 0;