Hi, On Sat 27-03-10 15:15:38, Dmitry Monakhov wrote: > - Skipp locking if quota is dirty already. > - Return old quota state to help fs-specciffic implementation to optimize > case where quota was dirty already. > > Signed-off-by: Dmitry Monakhov <dmonakhov@xxxxxxxxxx> > --- > fs/quota/dquot.c | 13 +++++++++++-- > 1 files changed, 11 insertions(+), 2 deletions(-) > > diff --git a/fs/quota/dquot.c b/fs/quota/dquot.c > index e0b870f..88a8ef2 100644 > --- a/fs/quota/dquot.c > +++ b/fs/quota/dquot.c > @@ -319,14 +319,23 @@ static inline int mark_dquot_dirty(struct dquot *dquot) > return dquot->dq_sb->dq_op->mark_dirty(dquot); > } > > +/* Mark dquot dirty in atomic meaner, and return it's old dirty flag state */ > int dquot_mark_dquot_dirty(struct dquot *dquot) > { > + int ret = 1; > + > + /* If quota is dirtly already we don't have to acquire dq_list_lock */ > + if (test_bit(DQ_MOD_B, &dquot->dq_flags)) > + return 1; > + > spin_lock(&dq_list_lock); > - if (!test_and_set_bit(DQ_MOD_B, &dquot->dq_flags)) > + if (!test_and_set_bit(DQ_MOD_B, &dquot->dq_flags)) { > list_add(&dquot->dq_dirty, &sb_dqopt(dquot->dq_sb)-> > info[dquot->dq_type].dqi_dirty_list); > + ret = 0; > + } > spin_unlock(&dq_list_lock); > - return 0; > + return ret; > } > EXPORT_SYMBOL(dquot_mark_dquot_dirty); OK, this looks fine. Merged. Honza -- Jan Kara <jack@xxxxxxx> SUSE Labs, CR -- To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html