Lines Matching refs:dquot
267 static inline void insert_dquot_hash(struct dquot *dquot) in insert_dquot_hash() argument
270 head = dquot_hash + hashfn(dquot->dq_sb, dquot->dq_id, dquot->dq_type); in insert_dquot_hash()
271 hlist_add_head(&dquot->dq_hash, head); in insert_dquot_hash()
274 static inline void remove_dquot_hash(struct dquot *dquot) in remove_dquot_hash() argument
276 hlist_del_init(&dquot->dq_hash); in remove_dquot_hash()
279 static struct dquot *find_dquot(unsigned int hashent, struct super_block *sb, in find_dquot()
283 struct dquot *dquot; in find_dquot() local
286 dquot = hlist_entry(node, struct dquot, dq_hash); in find_dquot()
287 if (dquot->dq_sb == sb && dquot->dq_id == id && in find_dquot()
288 dquot->dq_type == type) in find_dquot()
289 return dquot; in find_dquot()
295 static inline void put_dquot_last(struct dquot *dquot) in put_dquot_last() argument
297 list_add_tail(&dquot->dq_free, &free_dquots); in put_dquot_last()
301 static inline void remove_free_dquot(struct dquot *dquot) in remove_free_dquot() argument
303 if (list_empty(&dquot->dq_free)) in remove_free_dquot()
305 list_del_init(&dquot->dq_free); in remove_free_dquot()
309 static inline void put_inuse(struct dquot *dquot) in put_inuse() argument
313 list_add_tail(&dquot->dq_inuse, &inuse_list); in put_inuse()
317 static inline void remove_inuse(struct dquot *dquot) in remove_inuse() argument
320 list_del(&dquot->dq_inuse); in remove_inuse()
326 static void wait_on_dquot(struct dquot *dquot) in wait_on_dquot() argument
328 mutex_lock(&dquot->dq_lock); in wait_on_dquot()
329 mutex_unlock(&dquot->dq_lock); in wait_on_dquot()
332 static inline int dquot_dirty(struct dquot *dquot) in dquot_dirty() argument
334 return test_bit(DQ_MOD_B, &dquot->dq_flags); in dquot_dirty()
337 static inline int mark_dquot_dirty(struct dquot *dquot) in mark_dquot_dirty() argument
339 return dquot->dq_sb->dq_op->mark_dirty(dquot); in mark_dquot_dirty()
343 int dquot_mark_dquot_dirty(struct dquot *dquot) in dquot_mark_dquot_dirty() argument
348 if (test_bit(DQ_MOD_B, &dquot->dq_flags)) in dquot_mark_dquot_dirty()
352 if (!test_and_set_bit(DQ_MOD_B, &dquot->dq_flags)) { in dquot_mark_dquot_dirty()
353 list_add(&dquot->dq_dirty, &sb_dqopt(dquot->dq_sb)-> in dquot_mark_dquot_dirty()
354 info[dquot->dq_type].dqi_dirty_list); in dquot_mark_dquot_dirty()
363 static inline int mark_all_dquot_dirty(struct dquot * const *dquot) in mark_all_dquot_dirty() argument
369 if (dquot[cnt]) in mark_all_dquot_dirty()
371 ret = mark_dquot_dirty(dquot[cnt]); in mark_all_dquot_dirty()
378 static inline void dqput_all(struct dquot **dquot) in dqput_all() argument
383 dqput(dquot[cnt]); in dqput_all()
387 static inline int clear_dquot_dirty(struct dquot *dquot) in clear_dquot_dirty() argument
389 if (!test_and_clear_bit(DQ_MOD_B, &dquot->dq_flags)) in clear_dquot_dirty()
391 list_del_init(&dquot->dq_dirty); in clear_dquot_dirty()
405 int dquot_acquire(struct dquot *dquot) in dquot_acquire() argument
408 struct quota_info *dqopt = sb_dqopt(dquot->dq_sb); in dquot_acquire()
410 mutex_lock(&dquot->dq_lock); in dquot_acquire()
412 if (!test_bit(DQ_READ_B, &dquot->dq_flags)) in dquot_acquire()
413 ret = dqopt->ops[dquot->dq_type]->read_dqblk(dquot); in dquot_acquire()
416 set_bit(DQ_READ_B, &dquot->dq_flags); in dquot_acquire()
418 if (!test_bit(DQ_ACTIVE_B, &dquot->dq_flags) && !dquot->dq_off) { in dquot_acquire()
419 ret = dqopt->ops[dquot->dq_type]->commit_dqblk(dquot); in dquot_acquire()
421 if (info_dirty(&dqopt->info[dquot->dq_type])) { in dquot_acquire()
422 ret2 = dqopt->ops[dquot->dq_type]->write_file_info( in dquot_acquire()
423 dquot->dq_sb, dquot->dq_type); in dquot_acquire()
432 set_bit(DQ_ACTIVE_B, &dquot->dq_flags); in dquot_acquire()
435 mutex_unlock(&dquot->dq_lock); in dquot_acquire()
443 int dquot_commit(struct dquot *dquot) in dquot_commit() argument
446 struct quota_info *dqopt = sb_dqopt(dquot->dq_sb); in dquot_commit()
450 if (!clear_dquot_dirty(dquot)) { in dquot_commit()
457 if (test_bit(DQ_ACTIVE_B, &dquot->dq_flags)) in dquot_commit()
458 ret = dqopt->ops[dquot->dq_type]->commit_dqblk(dquot); in dquot_commit()
470 int dquot_release(struct dquot *dquot) in dquot_release() argument
473 struct quota_info *dqopt = sb_dqopt(dquot->dq_sb); in dquot_release()
475 mutex_lock(&dquot->dq_lock); in dquot_release()
477 if (atomic_read(&dquot->dq_count) > 1) in dquot_release()
480 if (dqopt->ops[dquot->dq_type]->release_dqblk) { in dquot_release()
481 ret = dqopt->ops[dquot->dq_type]->release_dqblk(dquot); in dquot_release()
483 if (info_dirty(&dqopt->info[dquot->dq_type])) { in dquot_release()
484 ret2 = dqopt->ops[dquot->dq_type]->write_file_info( in dquot_release()
485 dquot->dq_sb, dquot->dq_type); in dquot_release()
490 clear_bit(DQ_ACTIVE_B, &dquot->dq_flags); in dquot_release()
493 mutex_unlock(&dquot->dq_lock); in dquot_release()
498 void dquot_destroy(struct dquot *dquot) in dquot_destroy() argument
500 kmem_cache_free(dquot_cachep, dquot); in dquot_destroy()
504 static inline void do_destroy_dquot(struct dquot *dquot) in do_destroy_dquot() argument
506 dquot->dq_sb->dq_op->destroy_dquot(dquot); in do_destroy_dquot()
517 struct dquot *dquot, *tmp; in invalidate_dquots() local
521 list_for_each_entry_safe(dquot, tmp, &inuse_list, dq_inuse) { in invalidate_dquots()
522 if (dquot->dq_sb != sb) in invalidate_dquots()
524 if (dquot->dq_type != type) in invalidate_dquots()
527 if (atomic_read(&dquot->dq_count)) { in invalidate_dquots()
530 atomic_inc(&dquot->dq_count); in invalidate_dquots()
531 prepare_to_wait(&dquot->dq_wait_unused, &wait, in invalidate_dquots()
541 if (atomic_read(&dquot->dq_count) > 1) in invalidate_dquots()
543 finish_wait(&dquot->dq_wait_unused, &wait); in invalidate_dquots()
544 dqput(dquot); in invalidate_dquots()
554 remove_dquot_hash(dquot); in invalidate_dquots()
555 remove_free_dquot(dquot); in invalidate_dquots()
556 remove_inuse(dquot); in invalidate_dquots()
557 do_destroy_dquot(dquot); in invalidate_dquots()
564 int (*fn)(struct dquot *dquot, unsigned long priv), in dquot_scan_active() argument
567 struct dquot *dquot, *old_dquot = NULL; in dquot_scan_active() local
572 list_for_each_entry(dquot, &inuse_list, dq_inuse) { in dquot_scan_active()
573 if (!test_bit(DQ_ACTIVE_B, &dquot->dq_flags)) in dquot_scan_active()
575 if (dquot->dq_sb != sb) in dquot_scan_active()
578 atomic_inc(&dquot->dq_count); in dquot_scan_active()
582 old_dquot = dquot; in dquot_scan_active()
583 ret = fn(dquot, priv); in dquot_scan_active()
601 struct dquot *dquot; in dquot_quota_sync() local
614 dquot = list_first_entry(dirty, struct dquot, in dquot_quota_sync()
617 if (!test_bit(DQ_ACTIVE_B, &dquot->dq_flags)) { in dquot_quota_sync()
618 clear_dquot_dirty(dquot); in dquot_quota_sync()
624 atomic_inc(&dquot->dq_count); in dquot_quota_sync()
627 sb->dq_op->write_dquot(dquot); in dquot_quota_sync()
628 dqput(dquot); in dquot_quota_sync()
676 struct dquot *dquot; in prune_dqcache() local
680 dquot = list_entry(head, struct dquot, dq_free); in prune_dqcache()
681 remove_dquot_hash(dquot); in prune_dqcache()
682 remove_free_dquot(dquot); in prune_dqcache()
683 remove_inuse(dquot); in prune_dqcache()
684 do_destroy_dquot(dquot); in prune_dqcache()
718 void dqput(struct dquot *dquot) in dqput() argument
722 if (!dquot) in dqput()
725 if (!atomic_read(&dquot->dq_count)) { in dqput()
726 quota_error(dquot->dq_sb, "trying to free free dquot of %s %d", in dqput()
727 quotatypes[dquot->dq_type], dquot->dq_id); in dqput()
734 if (atomic_read(&dquot->dq_count) > 1) { in dqput()
736 atomic_dec(&dquot->dq_count); in dqput()
738 if (!sb_has_quota_active(dquot->dq_sb, dquot->dq_type) && in dqput()
739 atomic_read(&dquot->dq_count) == 1) in dqput()
740 wake_up(&dquot->dq_wait_unused); in dqput()
745 if (test_bit(DQ_ACTIVE_B, &dquot->dq_flags) && dquot_dirty(dquot)) { in dqput()
748 ret = dquot->dq_sb->dq_op->write_dquot(dquot); in dqput()
750 quota_error(dquot->dq_sb, "Can't write quota structure" in dqput()
758 clear_dquot_dirty(dquot); in dqput()
764 clear_dquot_dirty(dquot); in dqput()
765 if (test_bit(DQ_ACTIVE_B, &dquot->dq_flags)) { in dqput()
767 dquot->dq_sb->dq_op->release_dquot(dquot); in dqput()
770 atomic_dec(&dquot->dq_count); in dqput()
773 BUG_ON(!list_empty(&dquot->dq_free)); in dqput()
775 put_dquot_last(dquot); in dqput()
780 struct dquot *dquot_alloc(struct super_block *sb, int type) in dquot_alloc()
786 static struct dquot *get_empty_dquot(struct super_block *sb, int type) in get_empty_dquot()
788 struct dquot *dquot; in get_empty_dquot() local
790 dquot = sb->dq_op->alloc_dquot(sb, type); in get_empty_dquot()
791 if(!dquot) in get_empty_dquot()
794 mutex_init(&dquot->dq_lock); in get_empty_dquot()
795 INIT_LIST_HEAD(&dquot->dq_free); in get_empty_dquot()
796 INIT_LIST_HEAD(&dquot->dq_inuse); in get_empty_dquot()
797 INIT_HLIST_NODE(&dquot->dq_hash); in get_empty_dquot()
798 INIT_LIST_HEAD(&dquot->dq_dirty); in get_empty_dquot()
799 init_waitqueue_head(&dquot->dq_wait_unused); in get_empty_dquot()
800 dquot->dq_sb = sb; in get_empty_dquot()
801 dquot->dq_type = type; in get_empty_dquot()
802 atomic_set(&dquot->dq_count, 1); in get_empty_dquot()
804 return dquot; in get_empty_dquot()
815 struct dquot *dqget(struct super_block *sb, unsigned int id, int type) in dqget()
818 struct dquot *dquot = NULL, *empty = NULL; in dqget() local
832 dquot = find_dquot(hashent, sb, id, type); in dqget()
833 if (!dquot) { in dqget()
841 dquot = empty; in dqget()
843 dquot->dq_id = id; in dqget()
845 put_inuse(dquot); in dqget()
847 insert_dquot_hash(dquot); in dqget()
851 if (!atomic_read(&dquot->dq_count)) in dqget()
852 remove_free_dquot(dquot); in dqget()
853 atomic_inc(&dquot->dq_count); in dqget()
860 wait_on_dquot(dquot); in dqget()
862 if (!test_bit(DQ_ACTIVE_B, &dquot->dq_flags) && in dqget()
863 sb->dq_op->acquire_dquot(dquot) < 0) { in dqget()
864 dqput(dquot); in dqget()
865 dquot = NULL; in dqget()
869 BUG_ON(!dquot->dq_sb); /* Has somebody invalidated entry under us? */ in dqget()
875 return dquot; in dqget()
948 static inline int dqput_blocks(struct dquot *dquot) in dqput_blocks() argument
950 if (atomic_read(&dquot->dq_count) <= 1) in dqput_blocks()
963 struct dquot *dquot = inode->i_dquot[type]; in remove_inode_dquot_ref() local
966 if (dquot) { in remove_inode_dquot_ref()
967 if (dqput_blocks(dquot)) { in remove_inode_dquot_ref()
969 if (atomic_read(&dquot->dq_count) != 1) in remove_inode_dquot_ref()
972 atomic_read(&dquot->dq_count)); in remove_inode_dquot_ref()
977 list_add(&dquot->dq_free, tofree_head); in remove_inode_dquot_ref()
982 dqput(dquot); /* We have guaranteed we won't block */ in remove_inode_dquot_ref()
995 struct dquot *dquot; in put_dquot_list() local
999 dquot = list_entry(act_head, struct dquot, dq_free); in put_dquot_list()
1002 list_del_init(&dquot->dq_free); in put_dquot_list()
1003 dqput(dquot); in put_dquot_list()
1050 static inline void dquot_incr_inodes(struct dquot *dquot, qsize_t number) in dquot_incr_inodes() argument
1052 dquot->dq_dqb.dqb_curinodes += number; in dquot_incr_inodes()
1055 static inline void dquot_incr_space(struct dquot *dquot, qsize_t number) in dquot_incr_space() argument
1057 dquot->dq_dqb.dqb_curspace += number; in dquot_incr_space()
1060 static inline void dquot_resv_space(struct dquot *dquot, qsize_t number) in dquot_resv_space() argument
1062 dquot->dq_dqb.dqb_rsvspace += number; in dquot_resv_space()
1068 static void dquot_claim_reserved_space(struct dquot *dquot, qsize_t number) in dquot_claim_reserved_space() argument
1070 if (dquot->dq_dqb.dqb_rsvspace < number) { in dquot_claim_reserved_space()
1072 number = dquot->dq_dqb.dqb_rsvspace; in dquot_claim_reserved_space()
1074 dquot->dq_dqb.dqb_curspace += number; in dquot_claim_reserved_space()
1075 dquot->dq_dqb.dqb_rsvspace -= number; in dquot_claim_reserved_space()
1079 void dquot_free_reserved_space(struct dquot *dquot, qsize_t number) in dquot_free_reserved_space() argument
1081 if (dquot->dq_dqb.dqb_rsvspace >= number) in dquot_free_reserved_space()
1082 dquot->dq_dqb.dqb_rsvspace -= number; in dquot_free_reserved_space()
1085 dquot->dq_dqb.dqb_rsvspace = 0; in dquot_free_reserved_space()
1089 static void dquot_decr_inodes(struct dquot *dquot, qsize_t number) in dquot_decr_inodes() argument
1091 if (sb_dqopt(dquot->dq_sb)->flags & DQUOT_NEGATIVE_USAGE || in dquot_decr_inodes()
1092 dquot->dq_dqb.dqb_curinodes >= number) in dquot_decr_inodes()
1093 dquot->dq_dqb.dqb_curinodes -= number; in dquot_decr_inodes()
1095 dquot->dq_dqb.dqb_curinodes = 0; in dquot_decr_inodes()
1096 if (dquot->dq_dqb.dqb_curinodes <= dquot->dq_dqb.dqb_isoftlimit) in dquot_decr_inodes()
1097 dquot->dq_dqb.dqb_itime = (time_t) 0; in dquot_decr_inodes()
1098 clear_bit(DQ_INODES_B, &dquot->dq_flags); in dquot_decr_inodes()
1101 static void dquot_decr_space(struct dquot *dquot, qsize_t number) in dquot_decr_space() argument
1103 if (sb_dqopt(dquot->dq_sb)->flags & DQUOT_NEGATIVE_USAGE || in dquot_decr_space()
1104 dquot->dq_dqb.dqb_curspace >= number) in dquot_decr_space()
1105 dquot->dq_dqb.dqb_curspace -= number; in dquot_decr_space()
1107 dquot->dq_dqb.dqb_curspace = 0; in dquot_decr_space()
1108 if (dquot->dq_dqb.dqb_curspace <= dquot->dq_dqb.dqb_bsoftlimit) in dquot_decr_space()
1109 dquot->dq_dqb.dqb_btime = (time_t) 0; in dquot_decr_space()
1110 clear_bit(DQ_BLKS_B, &dquot->dq_flags); in dquot_decr_space()
1120 static int warning_issued(struct dquot *dquot, const int warntype) in warning_issued() argument
1129 return test_and_set_bit(flag, &dquot->dq_flags); in warning_issued()
1196 static void prepare_warning(struct dquot_warn *warn, struct dquot *dquot, in prepare_warning() argument
1199 if (warning_issued(dquot, warntype)) in prepare_warning()
1202 warn->w_sb = dquot->dq_sb; in prepare_warning()
1203 warn->w_dq_id = dquot->dq_id; in prepare_warning()
1204 warn->w_dq_type = dquot->dq_type; in prepare_warning()
1227 static int ignore_hardlimit(struct dquot *dquot) in ignore_hardlimit() argument
1229 struct mem_dqinfo *info = &sb_dqopt(dquot->dq_sb)->info[dquot->dq_type]; in ignore_hardlimit()
1237 static int check_idq(struct dquot *dquot, qsize_t inodes, in check_idq() argument
1240 qsize_t newinodes = dquot->dq_dqb.dqb_curinodes + inodes; in check_idq()
1242 if (!sb_has_quota_limits_enabled(dquot->dq_sb, dquot->dq_type) || in check_idq()
1243 test_bit(DQ_FAKE_B, &dquot->dq_flags)) in check_idq()
1246 if (dquot->dq_dqb.dqb_ihardlimit && in check_idq()
1247 newinodes > dquot->dq_dqb.dqb_ihardlimit && in check_idq()
1248 !ignore_hardlimit(dquot)) { in check_idq()
1249 prepare_warning(warn, dquot, QUOTA_NL_IHARDWARN); in check_idq()
1253 if (dquot->dq_dqb.dqb_isoftlimit && in check_idq()
1254 newinodes > dquot->dq_dqb.dqb_isoftlimit && in check_idq()
1255 dquot->dq_dqb.dqb_itime && in check_idq()
1256 get_seconds() >= dquot->dq_dqb.dqb_itime && in check_idq()
1257 !ignore_hardlimit(dquot)) { in check_idq()
1258 prepare_warning(warn, dquot, QUOTA_NL_ISOFTLONGWARN); in check_idq()
1262 if (dquot->dq_dqb.dqb_isoftlimit && in check_idq()
1263 newinodes > dquot->dq_dqb.dqb_isoftlimit && in check_idq()
1264 dquot->dq_dqb.dqb_itime == 0) { in check_idq()
1265 prepare_warning(warn, dquot, QUOTA_NL_ISOFTWARN); in check_idq()
1266 dquot->dq_dqb.dqb_itime = get_seconds() + in check_idq()
1267 sb_dqopt(dquot->dq_sb)->info[dquot->dq_type].dqi_igrace; in check_idq()
1274 static int check_bdq(struct dquot *dquot, qsize_t space, int prealloc, in check_bdq() argument
1278 struct super_block *sb = dquot->dq_sb; in check_bdq()
1280 if (!sb_has_quota_limits_enabled(sb, dquot->dq_type) || in check_bdq()
1281 test_bit(DQ_FAKE_B, &dquot->dq_flags)) in check_bdq()
1284 tspace = dquot->dq_dqb.dqb_curspace + dquot->dq_dqb.dqb_rsvspace in check_bdq()
1287 if (dquot->dq_dqb.dqb_bhardlimit && in check_bdq()
1288 tspace > dquot->dq_dqb.dqb_bhardlimit && in check_bdq()
1289 !ignore_hardlimit(dquot)) { in check_bdq()
1291 prepare_warning(warn, dquot, QUOTA_NL_BHARDWARN); in check_bdq()
1295 if (dquot->dq_dqb.dqb_bsoftlimit && in check_bdq()
1296 tspace > dquot->dq_dqb.dqb_bsoftlimit && in check_bdq()
1297 dquot->dq_dqb.dqb_btime && in check_bdq()
1298 get_seconds() >= dquot->dq_dqb.dqb_btime && in check_bdq()
1299 !ignore_hardlimit(dquot)) { in check_bdq()
1301 prepare_warning(warn, dquot, QUOTA_NL_BSOFTLONGWARN); in check_bdq()
1305 if (dquot->dq_dqb.dqb_bsoftlimit && in check_bdq()
1306 tspace > dquot->dq_dqb.dqb_bsoftlimit && in check_bdq()
1307 dquot->dq_dqb.dqb_btime == 0) { in check_bdq()
1309 prepare_warning(warn, dquot, QUOTA_NL_BSOFTWARN); in check_bdq()
1310 dquot->dq_dqb.dqb_btime = get_seconds() + in check_bdq()
1311 sb_dqopt(sb)->info[dquot->dq_type].dqi_bgrace; in check_bdq()
1324 static int info_idq_free(struct dquot *dquot, qsize_t inodes) in info_idq_free() argument
1328 if (test_bit(DQ_FAKE_B, &dquot->dq_flags) || in info_idq_free()
1329 dquot->dq_dqb.dqb_curinodes <= dquot->dq_dqb.dqb_isoftlimit || in info_idq_free()
1330 !sb_has_quota_limits_enabled(dquot->dq_sb, dquot->dq_type)) in info_idq_free()
1333 newinodes = dquot->dq_dqb.dqb_curinodes - inodes; in info_idq_free()
1334 if (newinodes <= dquot->dq_dqb.dqb_isoftlimit) in info_idq_free()
1336 if (dquot->dq_dqb.dqb_curinodes >= dquot->dq_dqb.dqb_ihardlimit && in info_idq_free()
1337 newinodes < dquot->dq_dqb.dqb_ihardlimit) in info_idq_free()
1342 static int info_bdq_free(struct dquot *dquot, qsize_t space) in info_bdq_free() argument
1344 if (test_bit(DQ_FAKE_B, &dquot->dq_flags) || in info_bdq_free()
1345 dquot->dq_dqb.dqb_curspace <= dquot->dq_dqb.dqb_bsoftlimit) in info_bdq_free()
1348 if (dquot->dq_dqb.dqb_curspace - space <= dquot->dq_dqb.dqb_bsoftlimit) in info_bdq_free()
1350 if (dquot->dq_dqb.dqb_curspace >= dquot->dq_dqb.dqb_bhardlimit && in info_bdq_free()
1351 dquot->dq_dqb.dqb_curspace - space < dquot->dq_dqb.dqb_bhardlimit) in info_bdq_free()
1378 struct dquot *got[MAXQUOTAS]; in __dquot_initialize()
1445 struct dquot *put[MAXQUOTAS]; in __dquot_drop()
1563 struct dquot **dquots = inode->i_dquot; in __dquot_alloc_space()
1619 struct dquot * const *dquots = inode->i_dquot; in dquot_alloc_inode()
1689 struct dquot **dquots = inode->i_dquot; in __dquot_free_space()
1734 struct dquot * const *dquots = inode->i_dquot; in dquot_free_inode()
1771 int __dquot_transfer(struct inode *inode, struct dquot **transfer_to) in __dquot_transfer()
1775 struct dquot *transfer_from[MAXQUOTAS] = {}; in __dquot_transfer()
1876 struct dquot *transfer_to[MAXQUOTAS] = {}; in dquot_transfer()
2341 static void do_get_dqblk(struct dquot *dquot, struct fs_disk_quota *di) in do_get_dqblk() argument
2343 struct mem_dqblk *dm = &dquot->dq_dqb; in do_get_dqblk()
2347 di->d_flags = dquot->dq_type == USRQUOTA ? in do_get_dqblk()
2349 di->d_id = dquot->dq_id; in do_get_dqblk()
2366 struct dquot *dquot; in dquot_get_dqblk() local
2368 dquot = dqget(sb, id, type); in dquot_get_dqblk()
2369 if (!dquot) in dquot_get_dqblk()
2371 do_get_dqblk(dquot, di); in dquot_get_dqblk()
2372 dqput(dquot); in dquot_get_dqblk()
2384 static int do_set_dqblk(struct dquot *dquot, struct fs_disk_quota *di) in do_set_dqblk() argument
2386 struct mem_dqblk *dm = &dquot->dq_dqb; in do_set_dqblk()
2388 struct mem_dqinfo *dqi = &sb_dqopt(dquot->dq_sb)->info[dquot->dq_type]; in do_set_dqblk()
2407 set_bit(DQ_LASTSET_B + QIF_SPACE_B, &dquot->dq_flags); in do_set_dqblk()
2416 set_bit(DQ_LASTSET_B + QIF_BLIMITS_B, &dquot->dq_flags); in do_set_dqblk()
2422 set_bit(DQ_LASTSET_B + QIF_INODES_B, &dquot->dq_flags); in do_set_dqblk()
2431 set_bit(DQ_LASTSET_B + QIF_ILIMITS_B, &dquot->dq_flags); in do_set_dqblk()
2437 set_bit(DQ_LASTSET_B + QIF_BTIME_B, &dquot->dq_flags); in do_set_dqblk()
2443 set_bit(DQ_LASTSET_B + QIF_ITIME_B, &dquot->dq_flags); in do_set_dqblk()
2450 clear_bit(DQ_BLKS_B, &dquot->dq_flags); in do_set_dqblk()
2459 clear_bit(DQ_INODES_B, &dquot->dq_flags); in do_set_dqblk()
2466 clear_bit(DQ_FAKE_B, &dquot->dq_flags); in do_set_dqblk()
2468 set_bit(DQ_FAKE_B, &dquot->dq_flags); in do_set_dqblk()
2470 mark_dquot_dirty(dquot); in do_set_dqblk()
2478 struct dquot *dquot; in dquot_set_dqblk() local
2481 dquot = dqget(sb, id, type); in dquot_set_dqblk()
2482 if (!dquot) { in dquot_set_dqblk()
2486 rc = do_set_dqblk(dquot, di); in dquot_set_dqblk()
2487 dqput(dquot); in dquot_set_dqblk()
2664 sizeof(struct dquot), sizeof(unsigned long) * 4, in dquot_init()