Lines Matching refs:dquot
69 static void ocfs2_global_disk2memdqb(struct dquot *dquot, void *dp) in ocfs2_global_disk2memdqb() argument
72 struct mem_dqblk *m = &dquot->dq_dqb; in ocfs2_global_disk2memdqb()
75 if (!test_bit(DQ_LASTSET_B + QIF_ILIMITS_B, &dquot->dq_flags)) { in ocfs2_global_disk2memdqb()
79 if (!test_bit(DQ_LASTSET_B + QIF_INODES_B, &dquot->dq_flags)) in ocfs2_global_disk2memdqb()
81 if (!test_bit(DQ_LASTSET_B + QIF_BLIMITS_B, &dquot->dq_flags)) { in ocfs2_global_disk2memdqb()
85 if (!test_bit(DQ_LASTSET_B + QIF_SPACE_B, &dquot->dq_flags)) in ocfs2_global_disk2memdqb()
87 if (!test_bit(DQ_LASTSET_B + QIF_BTIME_B, &dquot->dq_flags)) in ocfs2_global_disk2memdqb()
89 if (!test_bit(DQ_LASTSET_B + QIF_ITIME_B, &dquot->dq_flags)) in ocfs2_global_disk2memdqb()
91 OCFS2_DQUOT(dquot)->dq_use_count = le32_to_cpu(d->dqb_use_count); in ocfs2_global_disk2memdqb()
94 static void ocfs2_global_mem2diskdqb(void *dp, struct dquot *dquot) in ocfs2_global_mem2diskdqb() argument
97 struct mem_dqblk *m = &dquot->dq_dqb; in ocfs2_global_mem2diskdqb()
99 d->dqb_id = cpu_to_le32(from_kqid(&init_user_ns, dquot->dq_id)); in ocfs2_global_mem2diskdqb()
100 d->dqb_use_count = cpu_to_le32(OCFS2_DQUOT(dquot)->dq_use_count); in ocfs2_global_mem2diskdqb()
112 static int ocfs2_global_is_id(void *dp, struct dquot *dquot) in ocfs2_global_is_id() argument
116 sb_dqinfo(dquot->dq_sb, dquot->dq_id.type)->dqi_priv; in ocfs2_global_is_id()
121 return qid_eq(make_kqid(&init_user_ns, dquot->dq_id.type, in ocfs2_global_is_id()
123 dquot->dq_id); in ocfs2_global_is_id()
478 int __ocfs2_sync_dquot(struct dquot *dquot, int freeing) in __ocfs2_sync_dquot() argument
481 struct super_block *sb = dquot->dq_sb; in __ocfs2_sync_dquot()
482 int type = dquot->dq_id.type; in __ocfs2_sync_dquot()
490 dquot->dq_off); in __ocfs2_sync_dquot()
504 spacechange = dquot->dq_dqb.dqb_curspace - in __ocfs2_sync_dquot()
505 OCFS2_DQUOT(dquot)->dq_origspace; in __ocfs2_sync_dquot()
506 inodechange = dquot->dq_dqb.dqb_curinodes - in __ocfs2_sync_dquot()
507 OCFS2_DQUOT(dquot)->dq_originodes; in __ocfs2_sync_dquot()
508 olditime = dquot->dq_dqb.dqb_itime; in __ocfs2_sync_dquot()
509 oldbtime = dquot->dq_dqb.dqb_btime; in __ocfs2_sync_dquot()
510 ocfs2_global_disk2memdqb(dquot, &dqblk); in __ocfs2_sync_dquot()
511 trace_ocfs2_sync_dquot(from_kqid(&init_user_ns, dquot->dq_id), in __ocfs2_sync_dquot()
512 dquot->dq_dqb.dqb_curspace, in __ocfs2_sync_dquot()
514 dquot->dq_dqb.dqb_curinodes, in __ocfs2_sync_dquot()
516 if (!test_bit(DQ_LASTSET_B + QIF_SPACE_B, &dquot->dq_flags)) in __ocfs2_sync_dquot()
517 dquot->dq_dqb.dqb_curspace += spacechange; in __ocfs2_sync_dquot()
518 if (!test_bit(DQ_LASTSET_B + QIF_INODES_B, &dquot->dq_flags)) in __ocfs2_sync_dquot()
519 dquot->dq_dqb.dqb_curinodes += inodechange; in __ocfs2_sync_dquot()
521 if (dquot->dq_dqb.dqb_bsoftlimit && in __ocfs2_sync_dquot()
522 dquot->dq_dqb.dqb_curspace > dquot->dq_dqb.dqb_bsoftlimit) { in __ocfs2_sync_dquot()
523 if (!test_bit(DQ_LASTSET_B + QIF_BTIME_B, &dquot->dq_flags) && in __ocfs2_sync_dquot()
525 if (dquot->dq_dqb.dqb_btime > 0) in __ocfs2_sync_dquot()
526 dquot->dq_dqb.dqb_btime = in __ocfs2_sync_dquot()
527 min(dquot->dq_dqb.dqb_btime, oldbtime); in __ocfs2_sync_dquot()
529 dquot->dq_dqb.dqb_btime = oldbtime; in __ocfs2_sync_dquot()
532 dquot->dq_dqb.dqb_btime = 0; in __ocfs2_sync_dquot()
533 clear_bit(DQ_BLKS_B, &dquot->dq_flags); in __ocfs2_sync_dquot()
536 if (dquot->dq_dqb.dqb_isoftlimit && in __ocfs2_sync_dquot()
537 dquot->dq_dqb.dqb_curinodes > dquot->dq_dqb.dqb_isoftlimit) { in __ocfs2_sync_dquot()
538 if (!test_bit(DQ_LASTSET_B + QIF_ITIME_B, &dquot->dq_flags) && in __ocfs2_sync_dquot()
540 if (dquot->dq_dqb.dqb_itime > 0) in __ocfs2_sync_dquot()
541 dquot->dq_dqb.dqb_itime = in __ocfs2_sync_dquot()
542 min(dquot->dq_dqb.dqb_itime, olditime); in __ocfs2_sync_dquot()
544 dquot->dq_dqb.dqb_itime = olditime; in __ocfs2_sync_dquot()
547 dquot->dq_dqb.dqb_itime = 0; in __ocfs2_sync_dquot()
548 clear_bit(DQ_INODES_B, &dquot->dq_flags); in __ocfs2_sync_dquot()
551 __clear_bit(DQ_LASTSET_B + QIF_SPACE_B, &dquot->dq_flags); in __ocfs2_sync_dquot()
552 __clear_bit(DQ_LASTSET_B + QIF_INODES_B, &dquot->dq_flags); in __ocfs2_sync_dquot()
553 __clear_bit(DQ_LASTSET_B + QIF_BLIMITS_B, &dquot->dq_flags); in __ocfs2_sync_dquot()
554 __clear_bit(DQ_LASTSET_B + QIF_ILIMITS_B, &dquot->dq_flags); in __ocfs2_sync_dquot()
555 __clear_bit(DQ_LASTSET_B + QIF_BTIME_B, &dquot->dq_flags); in __ocfs2_sync_dquot()
556 __clear_bit(DQ_LASTSET_B + QIF_ITIME_B, &dquot->dq_flags); in __ocfs2_sync_dquot()
557 OCFS2_DQUOT(dquot)->dq_origspace = dquot->dq_dqb.dqb_curspace; in __ocfs2_sync_dquot()
558 OCFS2_DQUOT(dquot)->dq_originodes = dquot->dq_dqb.dqb_curinodes; in __ocfs2_sync_dquot()
563 " (type=%d, id=%u)\n", dquot->dq_id.type, in __ocfs2_sync_dquot()
564 (unsigned)from_kqid(&init_user_ns, dquot->dq_id)); in __ocfs2_sync_dquot()
568 OCFS2_DQUOT(dquot)->dq_use_count--; in __ocfs2_sync_dquot()
569 err = qtree_write_dquot(&info->dqi_gi, dquot); in __ocfs2_sync_dquot()
572 if (freeing && !OCFS2_DQUOT(dquot)->dq_use_count) { in __ocfs2_sync_dquot()
573 err = qtree_release_dquot(&info->dqi_gi, dquot); in __ocfs2_sync_dquot()
591 static int ocfs2_sync_dquot_helper(struct dquot *dquot, unsigned long type) in ocfs2_sync_dquot_helper() argument
594 struct super_block *sb = dquot->dq_sb; in ocfs2_sync_dquot_helper()
599 trace_ocfs2_sync_dquot_helper(from_kqid(&init_user_ns, dquot->dq_id), in ocfs2_sync_dquot_helper()
600 dquot->dq_id.type, in ocfs2_sync_dquot_helper()
602 if (type != dquot->dq_id.type) in ocfs2_sync_dquot_helper()
615 status = ocfs2_sync_dquot(dquot); in ocfs2_sync_dquot_helper()
619 status = ocfs2_local_write_dquot(dquot); in ocfs2_sync_dquot_helper()
646 static int ocfs2_write_dquot(struct dquot *dquot) in ocfs2_write_dquot() argument
649 struct ocfs2_super *osb = OCFS2_SB(dquot->dq_sb); in ocfs2_write_dquot()
652 trace_ocfs2_write_dquot(from_kqid(&init_user_ns, dquot->dq_id), in ocfs2_write_dquot()
653 dquot->dq_id.type); in ocfs2_write_dquot()
661 mutex_lock(&sb_dqopt(dquot->dq_sb)->dqio_mutex); in ocfs2_write_dquot()
662 status = ocfs2_local_write_dquot(dquot); in ocfs2_write_dquot()
663 mutex_unlock(&sb_dqopt(dquot->dq_sb)->dqio_mutex); in ocfs2_write_dquot()
704 static int ocfs2_release_dquot(struct dquot *dquot) in ocfs2_release_dquot() argument
708 sb_dqinfo(dquot->dq_sb, dquot->dq_id.type)->dqi_priv; in ocfs2_release_dquot()
709 struct ocfs2_super *osb = OCFS2_SB(dquot->dq_sb); in ocfs2_release_dquot()
712 trace_ocfs2_release_dquot(from_kqid(&init_user_ns, dquot->dq_id), in ocfs2_release_dquot()
713 dquot->dq_id.type); in ocfs2_release_dquot()
715 mutex_lock(&dquot->dq_lock); in ocfs2_release_dquot()
717 if (atomic_read(&dquot->dq_count) > 1) in ocfs2_release_dquot()
726 dqgrab(dquot); in ocfs2_release_dquot()
728 if (llist_add(&OCFS2_DQUOT(dquot)->list, &osb->dquot_drop_list)) in ocfs2_release_dquot()
736 ocfs2_calc_qdel_credits(dquot->dq_sb, dquot->dq_id.type)); in ocfs2_release_dquot()
743 status = ocfs2_global_release_dquot(dquot); in ocfs2_release_dquot()
748 status = ocfs2_local_release_dquot(handle, dquot); in ocfs2_release_dquot()
760 dquot->dq_off = 0; in ocfs2_release_dquot()
761 clear_bit(DQ_ACTIVE_B, &dquot->dq_flags); in ocfs2_release_dquot()
767 mutex_unlock(&dquot->dq_lock); in ocfs2_release_dquot()
778 static int ocfs2_acquire_dquot(struct dquot *dquot) in ocfs2_acquire_dquot() argument
782 struct super_block *sb = dquot->dq_sb; in ocfs2_acquire_dquot()
784 int type = dquot->dq_id.type; in ocfs2_acquire_dquot()
790 trace_ocfs2_acquire_dquot(from_kqid(&init_user_ns, dquot->dq_id), in ocfs2_acquire_dquot()
792 mutex_lock(&dquot->dq_lock); in ocfs2_acquire_dquot()
807 status = qtree_read_dquot(&info->dqi_gi, dquot); in ocfs2_acquire_dquot()
812 OCFS2_DQUOT(dquot)->dq_use_count++; in ocfs2_acquire_dquot()
813 OCFS2_DQUOT(dquot)->dq_origspace = dquot->dq_dqb.dqb_curspace; in ocfs2_acquire_dquot()
814 OCFS2_DQUOT(dquot)->dq_originodes = dquot->dq_dqb.dqb_curinodes; in ocfs2_acquire_dquot()
815 if (!dquot->dq_off) { /* No real quota entry? */ in ocfs2_acquire_dquot()
838 status = qtree_write_dquot(&info->dqi_gi, dquot); in ocfs2_acquire_dquot()
852 status = ocfs2_create_local_dquot(dquot); in ocfs2_acquire_dquot()
855 set_bit(DQ_ACTIVE_B, &dquot->dq_flags); in ocfs2_acquire_dquot()
857 mutex_unlock(&dquot->dq_lock); in ocfs2_acquire_dquot()
894 static int ocfs2_mark_dquot_dirty(struct dquot *dquot) in ocfs2_mark_dquot_dirty() argument
904 struct super_block *sb = dquot->dq_sb; in ocfs2_mark_dquot_dirty()
905 int type = dquot->dq_id.type; in ocfs2_mark_dquot_dirty()
910 trace_ocfs2_mark_dquot_dirty(from_kqid(&init_user_ns, dquot->dq_id), in ocfs2_mark_dquot_dirty()
916 if (dquot->dq_flags & mask) in ocfs2_mark_dquot_dirty()
922 status = ocfs2_write_dquot(dquot); in ocfs2_mark_dquot_dirty()
935 status = ocfs2_sync_dquot(dquot); in ocfs2_mark_dquot_dirty()
941 status = ocfs2_local_write_dquot(dquot); in ocfs2_mark_dquot_dirty()
979 static struct dquot *ocfs2_alloc_dquot(struct super_block *sb, int type) in ocfs2_alloc_dquot()
981 struct ocfs2_dquot *dquot = in ocfs2_alloc_dquot() local
984 if (!dquot) in ocfs2_alloc_dquot()
986 return &dquot->dq_dquot; in ocfs2_alloc_dquot()
989 static void ocfs2_destroy_dquot(struct dquot *dquot) in ocfs2_destroy_dquot() argument
991 kmem_cache_free(ocfs2_dquot_cachep, dquot); in ocfs2_destroy_dquot()