Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs
Pull ext2, ext3 and quota fixes from Jan Kara: "Interesting bits are: - removal of a special i_mutex locking subclass (I_MUTEX_QUOTA) since quota code does not need i_mutex anymore in any unusual way. - backport (from ext4) of a fix of a checkpointing bug (missing cache flush) that could lead to fs corruption on power failure The rest are just random small fixes & cleanups." * 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs: ext2: trivial fix to comment for ext2_free_blocks ext2: remove the redundant comment for ext2_export_ops ext3: return 32/64-bit dir name hash according to usage type quota: Get rid of nested I_MUTEX_QUOTA locking subclass quota: Use precomputed value of sb_dqopt in dquot_quota_sync ext2: Remove i_mutex use from ext2_quota_write() reiserfs: Remove i_mutex use from reiserfs_quota_write() ext4: Remove i_mutex use from ext4_quota_write() ext3: Remove i_mutex use from ext3_quota_write() quota: Fix double lock in add_dquot_ref() with CONFIG_QUOTA_DEBUG jbd: Write journal superblock with WRITE_FUA after checkpointing jbd: protect all log tail updates with j_checkpoint_mutex jbd: Split updating of journal superblock and marking journal empty ext2: do not register write_super within VFS ext2: Remove s_dirt handling ext2: write superblock only once on unmount ext3: update documentation with barrier=1 default ext3: remove max_debt in find_group_orlov() jbd: Refine commit writeout logic
This commit is contained in:
@@ -130,9 +130,6 @@ static void ext2_put_super (struct super_block * sb)
|
||||
|
||||
dquot_disable(sb, -1, DQUOT_USAGE_ENABLED | DQUOT_LIMITS_ENABLED);
|
||||
|
||||
if (sb->s_dirt)
|
||||
ext2_write_super(sb);
|
||||
|
||||
ext2_xattr_put_super(sb);
|
||||
if (!(sb->s_flags & MS_RDONLY)) {
|
||||
struct ext2_super_block *es = sbi->s_es;
|
||||
@@ -307,7 +304,6 @@ static const struct super_operations ext2_sops = {
|
||||
.write_inode = ext2_write_inode,
|
||||
.evict_inode = ext2_evict_inode,
|
||||
.put_super = ext2_put_super,
|
||||
.write_super = ext2_write_super,
|
||||
.sync_fs = ext2_sync_fs,
|
||||
.statfs = ext2_statfs,
|
||||
.remount_fs = ext2_remount,
|
||||
@@ -358,11 +354,6 @@ static struct dentry *ext2_fh_to_parent(struct super_block *sb, struct fid *fid,
|
||||
ext2_nfs_get_inode);
|
||||
}
|
||||
|
||||
/* Yes, most of these are left as NULL!!
|
||||
* A NULL value implies the default, which works with ext2-like file
|
||||
* systems, but can be improved upon.
|
||||
* Currently only get_parent is required.
|
||||
*/
|
||||
static const struct export_operations ext2_export_ops = {
|
||||
.fh_to_dentry = ext2_fh_to_dentry,
|
||||
.fh_to_parent = ext2_fh_to_parent,
|
||||
@@ -1176,7 +1167,6 @@ static void ext2_sync_super(struct super_block *sb, struct ext2_super_block *es,
|
||||
mark_buffer_dirty(EXT2_SB(sb)->s_sbh);
|
||||
if (wait)
|
||||
sync_dirty_buffer(EXT2_SB(sb)->s_sbh);
|
||||
sb->s_dirt = 0;
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -1209,8 +1199,6 @@ void ext2_write_super(struct super_block *sb)
|
||||
{
|
||||
if (!(sb->s_flags & MS_RDONLY))
|
||||
ext2_sync_fs(sb, 1);
|
||||
else
|
||||
sb->s_dirt = 0;
|
||||
}
|
||||
|
||||
static int ext2_remount (struct super_block * sb, int * flags, char * data)
|
||||
@@ -1456,7 +1444,6 @@ static ssize_t ext2_quota_write(struct super_block *sb, int type,
|
||||
struct buffer_head tmp_bh;
|
||||
struct buffer_head *bh;
|
||||
|
||||
mutex_lock_nested(&inode->i_mutex, I_MUTEX_QUOTA);
|
||||
while (towrite > 0) {
|
||||
tocopy = sb->s_blocksize - offset < towrite ?
|
||||
sb->s_blocksize - offset : towrite;
|
||||
@@ -1486,16 +1473,13 @@ static ssize_t ext2_quota_write(struct super_block *sb, int type,
|
||||
blk++;
|
||||
}
|
||||
out:
|
||||
if (len == towrite) {
|
||||
mutex_unlock(&inode->i_mutex);
|
||||
if (len == towrite)
|
||||
return err;
|
||||
}
|
||||
if (inode->i_size < off+len-towrite)
|
||||
i_size_write(inode, off+len-towrite);
|
||||
inode->i_version++;
|
||||
inode->i_mtime = inode->i_ctime = CURRENT_TIME;
|
||||
mark_inode_dirty(inode);
|
||||
mutex_unlock(&inode->i_mutex);
|
||||
return len - towrite;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user