diff options
| -rw-r--r-- | fs/quota/dquot.c | 72 | ||||
| -rw-r--r-- | include/linux/quotaops.h | 5 |
2 files changed, 28 insertions, 49 deletions
diff --git a/fs/quota/dquot.c b/fs/quota/dquot.c index b867578e62c0..d881d5a073b9 100644 --- a/fs/quota/dquot.c +++ b/fs/quota/dquot.c | |||
| @@ -1583,40 +1583,6 @@ static qsize_t *inode_reserved_space(struct inode * inode) | |||
| 1583 | return inode->i_sb->dq_op->get_reserved_space(inode); | 1583 | return inode->i_sb->dq_op->get_reserved_space(inode); |
| 1584 | } | 1584 | } |
| 1585 | 1585 | ||
| 1586 | void inode_add_rsv_space(struct inode *inode, qsize_t number) | ||
| 1587 | { | ||
| 1588 | spin_lock(&inode->i_lock); | ||
| 1589 | *inode_reserved_space(inode) += number; | ||
| 1590 | spin_unlock(&inode->i_lock); | ||
| 1591 | } | ||
| 1592 | EXPORT_SYMBOL(inode_add_rsv_space); | ||
| 1593 | |||
| 1594 | void inode_claim_rsv_space(struct inode *inode, qsize_t number) | ||
| 1595 | { | ||
| 1596 | spin_lock(&inode->i_lock); | ||
| 1597 | *inode_reserved_space(inode) -= number; | ||
| 1598 | __inode_add_bytes(inode, number); | ||
| 1599 | spin_unlock(&inode->i_lock); | ||
| 1600 | } | ||
| 1601 | EXPORT_SYMBOL(inode_claim_rsv_space); | ||
| 1602 | |||
| 1603 | void inode_reclaim_rsv_space(struct inode *inode, qsize_t number) | ||
| 1604 | { | ||
| 1605 | spin_lock(&inode->i_lock); | ||
| 1606 | *inode_reserved_space(inode) += number; | ||
| 1607 | __inode_sub_bytes(inode, number); | ||
| 1608 | spin_unlock(&inode->i_lock); | ||
| 1609 | } | ||
| 1610 | EXPORT_SYMBOL(inode_reclaim_rsv_space); | ||
| 1611 | |||
| 1612 | void inode_sub_rsv_space(struct inode *inode, qsize_t number) | ||
| 1613 | { | ||
| 1614 | spin_lock(&inode->i_lock); | ||
| 1615 | *inode_reserved_space(inode) -= number; | ||
| 1616 | spin_unlock(&inode->i_lock); | ||
| 1617 | } | ||
| 1618 | EXPORT_SYMBOL(inode_sub_rsv_space); | ||
| 1619 | |||
| 1620 | static qsize_t inode_get_rsv_space(struct inode *inode) | 1586 | static qsize_t inode_get_rsv_space(struct inode *inode) |
| 1621 | { | 1587 | { |
| 1622 | qsize_t ret; | 1588 | qsize_t ret; |
| @@ -1632,18 +1598,24 @@ static qsize_t inode_get_rsv_space(struct inode *inode) | |||
| 1632 | static void inode_incr_space(struct inode *inode, qsize_t number, | 1598 | static void inode_incr_space(struct inode *inode, qsize_t number, |
| 1633 | int reserve) | 1599 | int reserve) |
| 1634 | { | 1600 | { |
| 1635 | if (reserve) | 1601 | if (reserve) { |
| 1636 | inode_add_rsv_space(inode, number); | 1602 | spin_lock(&inode->i_lock); |
| 1637 | else | 1603 | *inode_reserved_space(inode) += number; |
| 1604 | spin_unlock(&inode->i_lock); | ||
| 1605 | } else { | ||
| 1638 | inode_add_bytes(inode, number); | 1606 | inode_add_bytes(inode, number); |
| 1607 | } | ||
| 1639 | } | 1608 | } |
| 1640 | 1609 | ||
| 1641 | static void inode_decr_space(struct inode *inode, qsize_t number, int reserve) | 1610 | static void inode_decr_space(struct inode *inode, qsize_t number, int reserve) |
| 1642 | { | 1611 | { |
| 1643 | if (reserve) | 1612 | if (reserve) { |
| 1644 | inode_sub_rsv_space(inode, number); | 1613 | spin_lock(&inode->i_lock); |
| 1645 | else | 1614 | *inode_reserved_space(inode) -= number; |
| 1615 | spin_unlock(&inode->i_lock); | ||
| 1616 | } else { | ||
| 1646 | inode_sub_bytes(inode, number); | 1617 | inode_sub_bytes(inode, number); |
| 1618 | } | ||
| 1647 | } | 1619 | } |
| 1648 | 1620 | ||
| 1649 | /* | 1621 | /* |
| @@ -1759,7 +1731,10 @@ int dquot_claim_space_nodirty(struct inode *inode, qsize_t number) | |||
| 1759 | int cnt, index; | 1731 | int cnt, index; |
| 1760 | 1732 | ||
| 1761 | if (!dquot_active(inode)) { | 1733 | if (!dquot_active(inode)) { |
| 1762 | inode_claim_rsv_space(inode, number); | 1734 | spin_lock(&inode->i_lock); |
| 1735 | *inode_reserved_space(inode) -= number; | ||
| 1736 | __inode_add_bytes(inode, number); | ||
| 1737 | spin_unlock(&inode->i_lock); | ||
| 1763 | return 0; | 1738 | return 0; |
| 1764 | } | 1739 | } |
| 1765 | 1740 | ||
| @@ -1772,7 +1747,10 @@ int dquot_claim_space_nodirty(struct inode *inode, qsize_t number) | |||
| 1772 | dquot_claim_reserved_space(dquots[cnt], number); | 1747 | dquot_claim_reserved_space(dquots[cnt], number); |
| 1773 | } | 1748 | } |
| 1774 | /* Update inode bytes */ | 1749 | /* Update inode bytes */ |
| 1775 | inode_claim_rsv_space(inode, number); | 1750 | spin_lock(&inode->i_lock); |
| 1751 | *inode_reserved_space(inode) -= number; | ||
| 1752 | __inode_add_bytes(inode, number); | ||
| 1753 | spin_unlock(&inode->i_lock); | ||
| 1776 | spin_unlock(&dq_data_lock); | 1754 | spin_unlock(&dq_data_lock); |
| 1777 | mark_all_dquot_dirty(dquots); | 1755 | mark_all_dquot_dirty(dquots); |
| 1778 | srcu_read_unlock(&dquot_srcu, index); | 1756 | srcu_read_unlock(&dquot_srcu, index); |
| @@ -1789,7 +1767,10 @@ void dquot_reclaim_space_nodirty(struct inode *inode, qsize_t number) | |||
| 1789 | int cnt, index; | 1767 | int cnt, index; |
| 1790 | 1768 | ||
| 1791 | if (!dquot_active(inode)) { | 1769 | if (!dquot_active(inode)) { |
| 1792 | inode_reclaim_rsv_space(inode, number); | 1770 | spin_lock(&inode->i_lock); |
| 1771 | *inode_reserved_space(inode) += number; | ||
| 1772 | __inode_sub_bytes(inode, number); | ||
| 1773 | spin_unlock(&inode->i_lock); | ||
| 1793 | return; | 1774 | return; |
| 1794 | } | 1775 | } |
| 1795 | 1776 | ||
| @@ -1802,7 +1783,10 @@ void dquot_reclaim_space_nodirty(struct inode *inode, qsize_t number) | |||
| 1802 | dquot_reclaim_reserved_space(dquots[cnt], number); | 1783 | dquot_reclaim_reserved_space(dquots[cnt], number); |
| 1803 | } | 1784 | } |
| 1804 | /* Update inode bytes */ | 1785 | /* Update inode bytes */ |
| 1805 | inode_reclaim_rsv_space(inode, number); | 1786 | spin_lock(&inode->i_lock); |
| 1787 | *inode_reserved_space(inode) += number; | ||
| 1788 | __inode_sub_bytes(inode, number); | ||
| 1789 | spin_unlock(&inode->i_lock); | ||
| 1806 | spin_unlock(&dq_data_lock); | 1790 | spin_unlock(&dq_data_lock); |
| 1807 | mark_all_dquot_dirty(dquots); | 1791 | mark_all_dquot_dirty(dquots); |
| 1808 | srcu_read_unlock(&dquot_srcu, index); | 1792 | srcu_read_unlock(&dquot_srcu, index); |
diff --git a/include/linux/quotaops.h b/include/linux/quotaops.h index dda22f45fc1b..0ce6fc49962e 100644 --- a/include/linux/quotaops.h +++ b/include/linux/quotaops.h | |||
| @@ -38,11 +38,6 @@ void __quota_error(struct super_block *sb, const char *func, | |||
| 38 | /* | 38 | /* |
| 39 | * declaration of quota_function calls in kernel. | 39 | * declaration of quota_function calls in kernel. |
| 40 | */ | 40 | */ |
| 41 | void inode_add_rsv_space(struct inode *inode, qsize_t number); | ||
| 42 | void inode_claim_rsv_space(struct inode *inode, qsize_t number); | ||
| 43 | void inode_sub_rsv_space(struct inode *inode, qsize_t number); | ||
| 44 | void inode_reclaim_rsv_space(struct inode *inode, qsize_t number); | ||
| 45 | |||
| 46 | int dquot_initialize(struct inode *inode); | 41 | int dquot_initialize(struct inode *inode); |
| 47 | bool dquot_initialize_needed(struct inode *inode); | 42 | bool dquot_initialize_needed(struct inode *inode); |
| 48 | void dquot_drop(struct inode *inode); | 43 | void dquot_drop(struct inode *inode); |
