mirror of
https://github.com/FEX-Emu/linux.git
synced 2025-01-07 18:14:04 +00:00
quota: Allow disabling tracking of dirty dquots in a list
Filesystems that are journalling quotas generally don't need tracking of dirty dquots in a list since forcing a transaction commit flushes all quotas anyway. Allow filesystem to say it doesn't want dquots to be tracked as it reduces contention on the dq_list_lock. Signed-off-by: Jan Kara <jack@suse.cz>
This commit is contained in:
parent
503330f382
commit
834057bf84
@ -344,6 +344,9 @@ int dquot_mark_dquot_dirty(struct dquot *dquot)
|
||||
if (!test_bit(DQ_ACTIVE_B, &dquot->dq_flags))
|
||||
return 0;
|
||||
|
||||
if (sb_dqopt(dquot->dq_sb)->flags & DQUOT_NOLIST_DIRTY)
|
||||
return test_and_set_bit(DQ_MOD_B, &dquot->dq_flags);
|
||||
|
||||
/* If quota is dirty already, we don't have to acquire dq_list_lock */
|
||||
if (test_bit(DQ_MOD_B, &dquot->dq_flags))
|
||||
return 1;
|
||||
@ -385,6 +388,9 @@ static inline void dqput_all(struct dquot **dquot)
|
||||
|
||||
static inline int clear_dquot_dirty(struct dquot *dquot)
|
||||
{
|
||||
if (sb_dqopt(dquot->dq_sb)->flags & DQUOT_NOLIST_DIRTY)
|
||||
return test_and_clear_bit(DQ_MOD_B, &dquot->dq_flags);
|
||||
|
||||
spin_lock(&dq_list_lock);
|
||||
if (!test_and_clear_bit(DQ_MOD_B, &dquot->dq_flags)) {
|
||||
spin_unlock(&dq_list_lock);
|
||||
|
@ -490,6 +490,9 @@ enum {
|
||||
*/
|
||||
#define DQUOT_NEGATIVE_USAGE (1 << (DQUOT_STATE_LAST + 1))
|
||||
/* Allow negative quota usage */
|
||||
/* Do not track dirty dquots in a list */
|
||||
#define DQUOT_NOLIST_DIRTY (1 << (DQUOT_STATE_LAST + 2))
|
||||
|
||||
static inline unsigned int dquot_state_flag(unsigned int flags, int type)
|
||||
{
|
||||
return flags << type;
|
||||
|
Loading…
Reference in New Issue
Block a user