fs/reiserfs/super.c | 12 ++++++++++++ 1 files changed, 12 insertions(+) diff -puN fs/reiserfs/super.c~reiserfs-quota-add-missing-lock_kernel fs/reiserfs/super.c --- linux-2.6.11-rc2/fs/reiserfs/super.c~reiserfs-quota-add-missing-lock_kernel 2005-01-27 13:09:35.101322376 +0300 +++ linux-2.6.11-rc2-root/fs/reiserfs/super.c 2005-01-27 13:15:19.608949256 +0300 @@ -1835,9 +1835,11 @@ static int reiserfs_dquot_initialize(str int ret; /* We may create quota structure so we need to reserve enough blocks */ + reiserfs_write_lock(inode->i_sb); journal_begin(&th, inode->i_sb, 2*REISERFS_QUOTA_INIT_BLOCKS); ret = dquot_initialize(inode, type); journal_end(&th, inode->i_sb, 2*REISERFS_QUOTA_INIT_BLOCKS); + reiserfs_write_unlock(inode->i_sb); return ret; } @@ -1847,9 +1849,11 @@ static int reiserfs_dquot_drop(struct in int ret; /* We may delete quota structure so we need to reserve enough blocks */ + reiserfs_write_lock(inode->i_sb); journal_begin(&th, inode->i_sb, 2*REISERFS_QUOTA_INIT_BLOCKS); ret = dquot_drop(inode); journal_end(&th, inode->i_sb, 2*REISERFS_QUOTA_INIT_BLOCKS); + reiserfs_write_unlock(inode->i_sb); return ret; } @@ -1858,9 +1862,11 @@ static int reiserfs_write_dquot(struct d struct reiserfs_transaction_handle th; int ret; + reiserfs_write_lock(dquot->dq_sb); journal_begin(&th, dquot->dq_sb, REISERFS_QUOTA_TRANS_BLOCKS); ret = dquot_commit(dquot); journal_end(&th, dquot->dq_sb, REISERFS_QUOTA_TRANS_BLOCKS); + reiserfs_write_unlock(dquot->dq_sb); return ret; } @@ -1869,9 +1875,11 @@ static int reiserfs_acquire_dquot(struct struct reiserfs_transaction_handle th; int ret; + reiserfs_write_lock(dquot->dq_sb); journal_begin(&th, dquot->dq_sb, REISERFS_QUOTA_INIT_BLOCKS); ret = dquot_acquire(dquot); journal_end(&th, dquot->dq_sb, REISERFS_QUOTA_INIT_BLOCKS); + reiserfs_write_unlock(dquot->dq_sb); return ret; } @@ -1880,9 +1888,11 @@ static int reiserfs_release_dquot(struct struct reiserfs_transaction_handle th; int ret; + reiserfs_write_lock(dquot->dq_sb); journal_begin(&th, dquot->dq_sb, REISERFS_QUOTA_INIT_BLOCKS); ret = dquot_release(dquot); journal_end(&th, dquot->dq_sb, REISERFS_QUOTA_INIT_BLOCKS); + reiserfs_write_unlock(dquot->dq_sb); return ret; } @@ -1904,9 +1914,11 @@ static int reiserfs_write_info(struct su int ret; /* Data block + inode block */ + reiserfs_write_lock(sb); journal_begin(&th, sb, 2); ret = dquot_commit_info(sb, type); journal_end(&th, sb, 2); + reiserfs_write_unlock(sb); return ret; } _