diff options
author | Jan Kara <jack@suse.cz> | 2010-10-11 09:22:21 -0400 |
---|---|---|
committer | Jan Kara <jack@suse.cz> | 2010-10-27 19:30:03 -0400 |
commit | 86f3cbec4a193c04d0a31c13132c5956731af6ff (patch) | |
tree | 6bc3f57914b07672b73320dc9604a40b8e3ffea5 /fs/quota | |
parent | 9e32784b71c2c84895016ca6ab271591669c02aa (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.c | 13 |
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; | |
1813 | warn: | ||
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; | ||
1818 | over_quota: | 1816 | over_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 | } |
1823 | EXPORT_SYMBOL(__dquot_transfer); | 1822 | EXPORT_SYMBOL(__dquot_transfer); |
1824 | 1823 | ||