On Mon 14-12-09 15:21:13, Dmitry Monakhov wrote: > Currently inode_reservation is managed by fs itself and this > reservation is transfered on dquot_transfer(). This means what > inode_reservation must always be in sync with > dquot->dq_dqb.dqb_rsvspace. Otherwise dquot_transfer() will result > in incorrect quota(WARN_ON in dquot_claim_reserved_space() will be > triggered) > This is not easy because of complex locking order issues > for example http://bugzilla.kernel.org/show_bug.cgi?id=14739 > > The patch introduce quota reservation field for each fs-inode > (fs specific inode is used in order to prevent bloating generic > vfs inode). This reservation is managed by quota code internally > similar to i_blocks/i_bytes and may not be always in sync with > internal fs reservation. > > Also perform some code rearrangement: > - Unify dquot_reserve_space() and dquot_reserve_space() > - Unify dquot_release_reserved_space() and dquot_free_space() > - Also this patch add missing warning update to release_rsv() > dquot_release_reserved_space() must call flush_warnings() as > dquot_free_space() does. > > Changes from V4 > - fixes and cleanups according to Jan's comments. > Changes from V3: > - fix deadlock in dquota_alloc_space in journalled mode with nodelalloc > Changes from V1: > - move qutoa_reservation field from vfs_inode to fs_inode > - account reservation in bytes instead of blocks. Looks good. I've just slightly updated changelog and below typecast (doing just __dquot_free_space(inode, number, 1)) and merged the patch to my tree. > +void dquot_release_reserved_space(struct inode *inode, qsize_t number) > +{ > + return (void )__dquot_free_space(inode, number, 1); > + > +} 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