aboutsummaryrefslogtreecommitdiffstats
path: root/fs/quota
diff options
context:
space:
mode:
authorJan Kara <jack@suse.cz>2010-10-11 09:22:21 -0400
committerJan Kara <jack@suse.cz>2010-10-27 19:30:03 -0400
commit86f3cbec4a193c04d0a31c13132c5956731af6ff (patch)
tree6bc3f57914b07672b73320dc9604a40b8e3ffea5 /fs/quota
parent9e32784b71c2c84895016ca6ab271591669c02aa (diff)
quota: Fix issuing of warnings from dquot_transfer
__dquot_transfer accidentally called flush_warnings for a wrong set of dquots which could result in quota warnings being issued with a wrong identification. Also when operation fails because of EDQUOT, there's no need check for issuing information message about user getting below limits (no transfer has actually happened). Signed-off-by: Jan Kara <jack@suse.cz>
Diffstat (limited to 'fs/quota')
-rw-r--r--fs/quota/dquot.c13
1 files changed, 6 insertions, 7 deletions
diff --git a/fs/quota/dquot.c b/fs/quota/dquot.c
index ed14beea8fe3..1bc38f56fa7c 100644
--- a/fs/quota/dquot.c
+++ b/fs/quota/dquot.c
@@ -1805,20 +1805,19 @@ int __dquot_transfer(struct inode *inode, struct dquot **transfer_to)
1805 1805
1806 mark_all_dquot_dirty(transfer_from); 1806 mark_all_dquot_dirty(transfer_from);
1807 mark_all_dquot_dirty(transfer_to); 1807 mark_all_dquot_dirty(transfer_to);
1808 flush_warnings(transfer_to, warntype_to);
1809 flush_warnings(transfer_from, warntype_from_inodes);
1810 flush_warnings(transfer_from, warntype_from_space);
1808 /* Pass back references to put */ 1811 /* Pass back references to put */
1809 for (cnt = 0; cnt < MAXQUOTAS; cnt++) 1812 for (cnt = 0; cnt < MAXQUOTAS; cnt++)
1810 if (is_valid[cnt]) 1813 if (is_valid[cnt])
1811 transfer_to[cnt] = transfer_from[cnt]; 1814 transfer_to[cnt] = transfer_from[cnt];
1812 1815 return 0;
1813warn:
1814 flush_warnings(transfer_to, warntype_to);
1815 flush_warnings(transfer_from, warntype_from_inodes);
1816 flush_warnings(transfer_from, warntype_from_space);
1817 return ret;
1818over_quota: 1816over_quota:
1819 spin_unlock(&dq_data_lock); 1817 spin_unlock(&dq_data_lock);
1820 up_write(&sb_dqopt(inode->i_sb)->dqptr_sem); 1818 up_write(&sb_dqopt(inode->i_sb)->dqptr_sem);
1821 goto warn; 1819 flush_warnings(transfer_to, warntype_to);
1820 return ret;
1822} 1821}
1823EXPORT_SYMBOL(__dquot_transfer); 1822EXPORT_SYMBOL(__dquot_transfer);
1824 1823