Lines Matching refs:dquot

277 static inline void insert_dquot_hash(struct dquot *dquot)  in insert_dquot_hash()  argument
280 head = dquot_hash + hashfn(dquot->dq_sb, dquot->dq_id); in insert_dquot_hash()
281 hlist_add_head(&dquot->dq_hash, head); in insert_dquot_hash()
284 static inline void remove_dquot_hash(struct dquot *dquot) in remove_dquot_hash() argument
286 hlist_del_init(&dquot->dq_hash); in remove_dquot_hash()
289 static struct dquot *find_dquot(unsigned int hashent, struct super_block *sb, in find_dquot()
293 struct dquot *dquot; in find_dquot() local
296 dquot = hlist_entry(node, struct dquot, dq_hash); in find_dquot()
297 if (dquot->dq_sb == sb && qid_eq(dquot->dq_id, qid)) in find_dquot()
298 return dquot; in find_dquot()
304 static inline void put_dquot_last(struct dquot *dquot) in put_dquot_last() argument
306 list_add_tail(&dquot->dq_free, &free_dquots); in put_dquot_last()
310 static inline void remove_free_dquot(struct dquot *dquot) in remove_free_dquot() argument
312 if (list_empty(&dquot->dq_free)) in remove_free_dquot()
314 list_del_init(&dquot->dq_free); in remove_free_dquot()
318 static inline void put_inuse(struct dquot *dquot) in put_inuse() argument
322 list_add_tail(&dquot->dq_inuse, &inuse_list); in put_inuse()
326 static inline void remove_inuse(struct dquot *dquot) in remove_inuse() argument
329 list_del(&dquot->dq_inuse); in remove_inuse()
335 static void wait_on_dquot(struct dquot *dquot) in wait_on_dquot() argument
337 mutex_lock(&dquot->dq_lock); in wait_on_dquot()
338 mutex_unlock(&dquot->dq_lock); in wait_on_dquot()
341 static inline int dquot_dirty(struct dquot *dquot) in dquot_dirty() argument
343 return test_bit(DQ_MOD_B, &dquot->dq_flags); in dquot_dirty()
346 static inline int mark_dquot_dirty(struct dquot *dquot) in mark_dquot_dirty() argument
348 return dquot->dq_sb->dq_op->mark_dirty(dquot); in mark_dquot_dirty()
352 int dquot_mark_dquot_dirty(struct dquot *dquot) in dquot_mark_dquot_dirty() argument
356 if (!test_bit(DQ_ACTIVE_B, &dquot->dq_flags)) in dquot_mark_dquot_dirty()
359 if (sb_dqopt(dquot->dq_sb)->flags & DQUOT_NOLIST_DIRTY) in dquot_mark_dquot_dirty()
360 return test_and_set_bit(DQ_MOD_B, &dquot->dq_flags); in dquot_mark_dquot_dirty()
363 if (test_bit(DQ_MOD_B, &dquot->dq_flags)) in dquot_mark_dquot_dirty()
367 if (!test_and_set_bit(DQ_MOD_B, &dquot->dq_flags)) { in dquot_mark_dquot_dirty()
368 list_add(&dquot->dq_dirty, &sb_dqopt(dquot->dq_sb)-> in dquot_mark_dquot_dirty()
369 info[dquot->dq_id.type].dqi_dirty_list); in dquot_mark_dquot_dirty()
378 static inline int mark_all_dquot_dirty(struct dquot * const *dquot) in mark_all_dquot_dirty() argument
384 if (dquot[cnt]) in mark_all_dquot_dirty()
386 ret = mark_dquot_dirty(dquot[cnt]); in mark_all_dquot_dirty()
393 static inline void dqput_all(struct dquot **dquot) in dqput_all() argument
398 dqput(dquot[cnt]); in dqput_all()
401 static inline int clear_dquot_dirty(struct dquot *dquot) in clear_dquot_dirty() argument
403 if (sb_dqopt(dquot->dq_sb)->flags & DQUOT_NOLIST_DIRTY) in clear_dquot_dirty()
404 return test_and_clear_bit(DQ_MOD_B, &dquot->dq_flags); in clear_dquot_dirty()
407 if (!test_and_clear_bit(DQ_MOD_B, &dquot->dq_flags)) { in clear_dquot_dirty()
411 list_del_init(&dquot->dq_dirty); in clear_dquot_dirty()
428 int dquot_acquire(struct dquot *dquot) in dquot_acquire() argument
432 struct quota_info *dqopt = sb_dqopt(dquot->dq_sb); in dquot_acquire()
434 mutex_lock(&dquot->dq_lock); in dquot_acquire()
436 if (!test_bit(DQ_READ_B, &dquot->dq_flags)) { in dquot_acquire()
437 ret = dqopt->ops[dquot->dq_id.type]->read_dqblk(dquot); in dquot_acquire()
443 set_bit(DQ_READ_B, &dquot->dq_flags); in dquot_acquire()
445 if (!test_bit(DQ_ACTIVE_B, &dquot->dq_flags) && !dquot->dq_off) { in dquot_acquire()
446 ret = dqopt->ops[dquot->dq_id.type]->commit_dqblk(dquot); in dquot_acquire()
448 if (info_dirty(&dqopt->info[dquot->dq_id.type])) { in dquot_acquire()
449 ret2 = dqopt->ops[dquot->dq_id.type]->write_file_info( in dquot_acquire()
450 dquot->dq_sb, dquot->dq_id.type); in dquot_acquire()
464 set_bit(DQ_ACTIVE_B, &dquot->dq_flags); in dquot_acquire()
467 mutex_unlock(&dquot->dq_lock); in dquot_acquire()
475 int dquot_commit(struct dquot *dquot) in dquot_commit() argument
479 struct quota_info *dqopt = sb_dqopt(dquot->dq_sb); in dquot_commit()
481 mutex_lock(&dquot->dq_lock); in dquot_commit()
483 if (!clear_dquot_dirty(dquot)) in dquot_commit()
487 if (test_bit(DQ_ACTIVE_B, &dquot->dq_flags)) in dquot_commit()
488 ret = dqopt->ops[dquot->dq_id.type]->commit_dqblk(dquot); in dquot_commit()
493 mutex_unlock(&dquot->dq_lock); in dquot_commit()
501 int dquot_release(struct dquot *dquot) in dquot_release() argument
505 struct quota_info *dqopt = sb_dqopt(dquot->dq_sb); in dquot_release()
507 mutex_lock(&dquot->dq_lock); in dquot_release()
510 if (dquot_is_busy(dquot)) in dquot_release()
512 if (dqopt->ops[dquot->dq_id.type]->release_dqblk) { in dquot_release()
513 ret = dqopt->ops[dquot->dq_id.type]->release_dqblk(dquot); in dquot_release()
515 if (info_dirty(&dqopt->info[dquot->dq_id.type])) { in dquot_release()
516 ret2 = dqopt->ops[dquot->dq_id.type]->write_file_info( in dquot_release()
517 dquot->dq_sb, dquot->dq_id.type); in dquot_release()
522 clear_bit(DQ_ACTIVE_B, &dquot->dq_flags); in dquot_release()
525 mutex_unlock(&dquot->dq_lock); in dquot_release()
530 void dquot_destroy(struct dquot *dquot) in dquot_destroy() argument
532 kmem_cache_free(dquot_cachep, dquot); in dquot_destroy()
536 static inline void do_destroy_dquot(struct dquot *dquot) in do_destroy_dquot() argument
538 dquot->dq_sb->dq_op->destroy_dquot(dquot); in do_destroy_dquot()
549 struct dquot *dquot, *tmp; in invalidate_dquots() local
553 list_for_each_entry_safe(dquot, tmp, &inuse_list, dq_inuse) { in invalidate_dquots()
554 if (dquot->dq_sb != sb) in invalidate_dquots()
556 if (dquot->dq_id.type != type) in invalidate_dquots()
559 if (atomic_read(&dquot->dq_count)) { in invalidate_dquots()
560 dqgrab(dquot); in invalidate_dquots()
571 atomic_read(&dquot->dq_count) == 1); in invalidate_dquots()
572 dqput(dquot); in invalidate_dquots()
582 remove_dquot_hash(dquot); in invalidate_dquots()
583 remove_free_dquot(dquot); in invalidate_dquots()
584 remove_inuse(dquot); in invalidate_dquots()
585 do_destroy_dquot(dquot); in invalidate_dquots()
592 int (*fn)(struct dquot *dquot, unsigned long priv), in dquot_scan_active() argument
595 struct dquot *dquot, *old_dquot = NULL; in dquot_scan_active() local
601 list_for_each_entry(dquot, &inuse_list, dq_inuse) { in dquot_scan_active()
602 if (!test_bit(DQ_ACTIVE_B, &dquot->dq_flags)) in dquot_scan_active()
604 if (dquot->dq_sb != sb) in dquot_scan_active()
607 atomic_inc(&dquot->dq_count); in dquot_scan_active()
610 old_dquot = dquot; in dquot_scan_active()
616 wait_on_dquot(dquot); in dquot_scan_active()
617 if (test_bit(DQ_ACTIVE_B, &dquot->dq_flags)) { in dquot_scan_active()
618 ret = fn(dquot, priv); in dquot_scan_active()
637 struct dquot *dquot; in dquot_writeback_dquots() local
653 dquot = list_first_entry(&dirty, struct dquot, in dquot_writeback_dquots()
656 WARN_ON(!test_bit(DQ_ACTIVE_B, &dquot->dq_flags)); in dquot_writeback_dquots()
661 dqgrab(dquot); in dquot_writeback_dquots()
663 err = sb->dq_op->write_dquot(dquot); in dquot_writeback_dquots()
669 clear_dquot_dirty(dquot); in dquot_writeback_dquots()
673 dqput(dquot); in dquot_writeback_dquots()
735 struct dquot *dquot; in dqcache_shrink_scan() local
740 dquot = list_first_entry(&free_dquots, struct dquot, dq_free); in dqcache_shrink_scan()
741 remove_dquot_hash(dquot); in dqcache_shrink_scan()
742 remove_free_dquot(dquot); in dqcache_shrink_scan()
743 remove_inuse(dquot); in dqcache_shrink_scan()
744 do_destroy_dquot(dquot); in dqcache_shrink_scan()
768 void dqput(struct dquot *dquot) in dqput() argument
772 if (!dquot) in dqput()
775 if (!atomic_read(&dquot->dq_count)) { in dqput()
776 quota_error(dquot->dq_sb, "trying to free free dquot of %s %d", in dqput()
777 quotatypes[dquot->dq_id.type], in dqput()
778 from_kqid(&init_user_ns, dquot->dq_id)); in dqput()
785 if (atomic_read(&dquot->dq_count) > 1) { in dqput()
787 atomic_dec(&dquot->dq_count); in dqput()
789 if (!sb_has_quota_active(dquot->dq_sb, dquot->dq_id.type) && in dqput()
790 atomic_read(&dquot->dq_count) == 1) in dqput()
796 if (dquot_dirty(dquot)) { in dqput()
799 ret = dquot->dq_sb->dq_op->write_dquot(dquot); in dqput()
801 quota_error(dquot->dq_sb, "Can't write quota structure" in dqput()
808 clear_dquot_dirty(dquot); in dqput()
812 if (test_bit(DQ_ACTIVE_B, &dquot->dq_flags)) { in dqput()
814 dquot->dq_sb->dq_op->release_dquot(dquot); in dqput()
817 atomic_dec(&dquot->dq_count); in dqput()
820 BUG_ON(!list_empty(&dquot->dq_free)); in dqput()
822 put_dquot_last(dquot); in dqput()
827 struct dquot *dquot_alloc(struct super_block *sb, int type) in dquot_alloc()
833 static struct dquot *get_empty_dquot(struct super_block *sb, int type) in get_empty_dquot()
835 struct dquot *dquot; in get_empty_dquot() local
837 dquot = sb->dq_op->alloc_dquot(sb, type); in get_empty_dquot()
838 if(!dquot) in get_empty_dquot()
841 mutex_init(&dquot->dq_lock); in get_empty_dquot()
842 INIT_LIST_HEAD(&dquot->dq_free); in get_empty_dquot()
843 INIT_LIST_HEAD(&dquot->dq_inuse); in get_empty_dquot()
844 INIT_HLIST_NODE(&dquot->dq_hash); in get_empty_dquot()
845 INIT_LIST_HEAD(&dquot->dq_dirty); in get_empty_dquot()
846 dquot->dq_sb = sb; in get_empty_dquot()
847 dquot->dq_id = make_kqid_invalid(type); in get_empty_dquot()
848 atomic_set(&dquot->dq_count, 1); in get_empty_dquot()
849 spin_lock_init(&dquot->dq_dqb_lock); in get_empty_dquot()
851 return dquot; in get_empty_dquot()
862 struct dquot *dqget(struct super_block *sb, struct kqid qid) in dqget()
865 struct dquot *dquot, *empty = NULL; in dqget() local
878 dquot = ERR_PTR(-ESRCH); in dqget()
883 dquot = find_dquot(hashent, sb, qid); in dqget()
884 if (!dquot) { in dqget()
892 dquot = empty; in dqget()
894 dquot->dq_id = qid; in dqget()
896 put_inuse(dquot); in dqget()
898 insert_dquot_hash(dquot); in dqget()
902 if (!atomic_read(&dquot->dq_count)) in dqget()
903 remove_free_dquot(dquot); in dqget()
904 atomic_inc(&dquot->dq_count); in dqget()
911 wait_on_dquot(dquot); in dqget()
913 if (!test_bit(DQ_ACTIVE_B, &dquot->dq_flags)) { in dqget()
916 err = sb->dq_op->acquire_dquot(dquot); in dqget()
918 dqput(dquot); in dqget()
919 dquot = ERR_PTR(err); in dqget()
929 BUG_ON(!dquot->dq_sb); /* Has somebody invalidated entry under us? */ in dqget()
935 return dquot; in dqget()
939 static inline struct dquot **i_dquot(struct inode *inode) in i_dquot()
946 struct dquot * const *dquots; in dqinit_needed()
1026 struct dquot **dquots = i_dquot(inode); in remove_inode_dquot_ref()
1027 struct dquot *dquot = dquots[type]; in remove_inode_dquot_ref() local
1029 if (!dquot) in remove_inode_dquot_ref()
1033 if (list_empty(&dquot->dq_free)) { in remove_inode_dquot_ref()
1039 list_add(&dquot->dq_free, tofree_head); in remove_inode_dquot_ref()
1046 dqput(dquot); in remove_inode_dquot_ref()
1058 struct dquot *dquot; in put_dquot_list() local
1062 dquot = list_entry(act_head, struct dquot, dq_free); in put_dquot_list()
1065 list_del_init(&dquot->dq_free); in put_dquot_list()
1066 dqput(dquot); in put_dquot_list()
1119 void dquot_free_reserved_space(struct dquot *dquot, qsize_t number) in dquot_free_reserved_space() argument
1121 if (dquot->dq_dqb.dqb_rsvspace >= number) in dquot_free_reserved_space()
1122 dquot->dq_dqb.dqb_rsvspace -= number; in dquot_free_reserved_space()
1125 dquot->dq_dqb.dqb_rsvspace = 0; in dquot_free_reserved_space()
1127 if (dquot->dq_dqb.dqb_curspace + dquot->dq_dqb.dqb_rsvspace <= in dquot_free_reserved_space()
1128 dquot->dq_dqb.dqb_bsoftlimit) in dquot_free_reserved_space()
1129 dquot->dq_dqb.dqb_btime = (time64_t) 0; in dquot_free_reserved_space()
1130 clear_bit(DQ_BLKS_B, &dquot->dq_flags); in dquot_free_reserved_space()
1133 static void dquot_decr_inodes(struct dquot *dquot, qsize_t number) in dquot_decr_inodes() argument
1135 if (sb_dqopt(dquot->dq_sb)->flags & DQUOT_NEGATIVE_USAGE || in dquot_decr_inodes()
1136 dquot->dq_dqb.dqb_curinodes >= number) in dquot_decr_inodes()
1137 dquot->dq_dqb.dqb_curinodes -= number; in dquot_decr_inodes()
1139 dquot->dq_dqb.dqb_curinodes = 0; in dquot_decr_inodes()
1140 if (dquot->dq_dqb.dqb_curinodes <= dquot->dq_dqb.dqb_isoftlimit) in dquot_decr_inodes()
1141 dquot->dq_dqb.dqb_itime = (time64_t) 0; in dquot_decr_inodes()
1142 clear_bit(DQ_INODES_B, &dquot->dq_flags); in dquot_decr_inodes()
1145 static void dquot_decr_space(struct dquot *dquot, qsize_t number) in dquot_decr_space() argument
1147 if (sb_dqopt(dquot->dq_sb)->flags & DQUOT_NEGATIVE_USAGE || in dquot_decr_space()
1148 dquot->dq_dqb.dqb_curspace >= number) in dquot_decr_space()
1149 dquot->dq_dqb.dqb_curspace -= number; in dquot_decr_space()
1151 dquot->dq_dqb.dqb_curspace = 0; in dquot_decr_space()
1152 if (dquot->dq_dqb.dqb_curspace + dquot->dq_dqb.dqb_rsvspace <= in dquot_decr_space()
1153 dquot->dq_dqb.dqb_bsoftlimit) in dquot_decr_space()
1154 dquot->dq_dqb.dqb_btime = (time64_t) 0; in dquot_decr_space()
1155 clear_bit(DQ_BLKS_B, &dquot->dq_flags); in dquot_decr_space()
1164 static int warning_issued(struct dquot *dquot, const int warntype) in warning_issued() argument
1173 return test_and_set_bit(flag, &dquot->dq_flags); in warning_issued()
1242 static void prepare_warning(struct dquot_warn *warn, struct dquot *dquot, in prepare_warning() argument
1245 if (warning_issued(dquot, warntype)) in prepare_warning()
1248 warn->w_sb = dquot->dq_sb; in prepare_warning()
1249 warn->w_dq_id = dquot->dq_id; in prepare_warning()
1272 static int ignore_hardlimit(struct dquot *dquot) in ignore_hardlimit() argument
1274 struct mem_dqinfo *info = &sb_dqopt(dquot->dq_sb)->info[dquot->dq_id.type]; in ignore_hardlimit()
1281 static int dquot_add_inodes(struct dquot *dquot, qsize_t inodes, in dquot_add_inodes() argument
1287 spin_lock(&dquot->dq_dqb_lock); in dquot_add_inodes()
1288 newinodes = dquot->dq_dqb.dqb_curinodes + inodes; in dquot_add_inodes()
1289 if (!sb_has_quota_limits_enabled(dquot->dq_sb, dquot->dq_id.type) || in dquot_add_inodes()
1290 test_bit(DQ_FAKE_B, &dquot->dq_flags)) in dquot_add_inodes()
1293 if (dquot->dq_dqb.dqb_ihardlimit && in dquot_add_inodes()
1294 newinodes > dquot->dq_dqb.dqb_ihardlimit && in dquot_add_inodes()
1295 !ignore_hardlimit(dquot)) { in dquot_add_inodes()
1296 prepare_warning(warn, dquot, QUOTA_NL_IHARDWARN); in dquot_add_inodes()
1301 if (dquot->dq_dqb.dqb_isoftlimit && in dquot_add_inodes()
1302 newinodes > dquot->dq_dqb.dqb_isoftlimit && in dquot_add_inodes()
1303 dquot->dq_dqb.dqb_itime && in dquot_add_inodes()
1304 ktime_get_real_seconds() >= dquot->dq_dqb.dqb_itime && in dquot_add_inodes()
1305 !ignore_hardlimit(dquot)) { in dquot_add_inodes()
1306 prepare_warning(warn, dquot, QUOTA_NL_ISOFTLONGWARN); in dquot_add_inodes()
1311 if (dquot->dq_dqb.dqb_isoftlimit && in dquot_add_inodes()
1312 newinodes > dquot->dq_dqb.dqb_isoftlimit && in dquot_add_inodes()
1313 dquot->dq_dqb.dqb_itime == 0) { in dquot_add_inodes()
1314 prepare_warning(warn, dquot, QUOTA_NL_ISOFTWARN); in dquot_add_inodes()
1315 dquot->dq_dqb.dqb_itime = ktime_get_real_seconds() + in dquot_add_inodes()
1316 sb_dqopt(dquot->dq_sb)->info[dquot->dq_id.type].dqi_igrace; in dquot_add_inodes()
1319 dquot->dq_dqb.dqb_curinodes = newinodes; in dquot_add_inodes()
1322 spin_unlock(&dquot->dq_dqb_lock); in dquot_add_inodes()
1326 static int dquot_add_space(struct dquot *dquot, qsize_t space, in dquot_add_space() argument
1331 struct super_block *sb = dquot->dq_sb; in dquot_add_space()
1334 spin_lock(&dquot->dq_dqb_lock); in dquot_add_space()
1335 if (!sb_has_quota_limits_enabled(sb, dquot->dq_id.type) || in dquot_add_space()
1336 test_bit(DQ_FAKE_B, &dquot->dq_flags)) in dquot_add_space()
1339 tspace = dquot->dq_dqb.dqb_curspace + dquot->dq_dqb.dqb_rsvspace in dquot_add_space()
1342 if (dquot->dq_dqb.dqb_bhardlimit && in dquot_add_space()
1343 tspace > dquot->dq_dqb.dqb_bhardlimit && in dquot_add_space()
1344 !ignore_hardlimit(dquot)) { in dquot_add_space()
1346 prepare_warning(warn, dquot, QUOTA_NL_BHARDWARN); in dquot_add_space()
1351 if (dquot->dq_dqb.dqb_bsoftlimit && in dquot_add_space()
1352 tspace > dquot->dq_dqb.dqb_bsoftlimit && in dquot_add_space()
1353 dquot->dq_dqb.dqb_btime && in dquot_add_space()
1354 ktime_get_real_seconds() >= dquot->dq_dqb.dqb_btime && in dquot_add_space()
1355 !ignore_hardlimit(dquot)) { in dquot_add_space()
1357 prepare_warning(warn, dquot, QUOTA_NL_BSOFTLONGWARN); in dquot_add_space()
1362 if (dquot->dq_dqb.dqb_bsoftlimit && in dquot_add_space()
1363 tspace > dquot->dq_dqb.dqb_bsoftlimit && in dquot_add_space()
1364 dquot->dq_dqb.dqb_btime == 0) { in dquot_add_space()
1366 prepare_warning(warn, dquot, QUOTA_NL_BSOFTWARN); in dquot_add_space()
1367 dquot->dq_dqb.dqb_btime = ktime_get_real_seconds() + in dquot_add_space()
1368 sb_dqopt(sb)->info[dquot->dq_id.type].dqi_bgrace; in dquot_add_space()
1387 dquot->dq_dqb.dqb_rsvspace += rsv_space; in dquot_add_space()
1388 dquot->dq_dqb.dqb_curspace += space; in dquot_add_space()
1390 spin_unlock(&dquot->dq_dqb_lock); in dquot_add_space()
1394 static int info_idq_free(struct dquot *dquot, qsize_t inodes) in info_idq_free() argument
1398 if (test_bit(DQ_FAKE_B, &dquot->dq_flags) || in info_idq_free()
1399 dquot->dq_dqb.dqb_curinodes <= dquot->dq_dqb.dqb_isoftlimit || in info_idq_free()
1400 !sb_has_quota_limits_enabled(dquot->dq_sb, dquot->dq_id.type)) in info_idq_free()
1403 newinodes = dquot->dq_dqb.dqb_curinodes - inodes; in info_idq_free()
1404 if (newinodes <= dquot->dq_dqb.dqb_isoftlimit) in info_idq_free()
1406 if (dquot->dq_dqb.dqb_curinodes >= dquot->dq_dqb.dqb_ihardlimit && in info_idq_free()
1407 newinodes < dquot->dq_dqb.dqb_ihardlimit) in info_idq_free()
1412 static int info_bdq_free(struct dquot *dquot, qsize_t space) in info_bdq_free() argument
1416 tspace = dquot->dq_dqb.dqb_curspace + dquot->dq_dqb.dqb_rsvspace; in info_bdq_free()
1418 if (test_bit(DQ_FAKE_B, &dquot->dq_flags) || in info_bdq_free()
1419 tspace <= dquot->dq_dqb.dqb_bsoftlimit) in info_bdq_free()
1422 if (tspace - space <= dquot->dq_dqb.dqb_bsoftlimit) in info_bdq_free()
1424 if (tspace >= dquot->dq_dqb.dqb_bhardlimit && in info_bdq_free()
1425 tspace - space < dquot->dq_dqb.dqb_bhardlimit) in info_bdq_free()
1448 struct dquot **dquots, *got[MAXQUOTAS] = {}; in __dquot_initialize()
1463 struct dquot *dquot; in __dquot_initialize() local
1494 dquot = dqget(sb, qid); in __dquot_initialize()
1495 if (IS_ERR(dquot)) { in __dquot_initialize()
1497 if (PTR_ERR(dquot) != -ESRCH) { in __dquot_initialize()
1498 ret = PTR_ERR(dquot); in __dquot_initialize()
1501 dquot = NULL; in __dquot_initialize()
1503 got[cnt] = dquot; in __dquot_initialize()
1558 struct dquot **dquots; in dquot_initialize_needed()
1583 struct dquot **dquots = i_dquot(inode); in __dquot_drop()
1584 struct dquot *put[MAXQUOTAS]; in __dquot_drop()
1597 struct dquot * const *dquots; in dquot_drop()
1670 struct dquot **dquots; in __dquot_alloc_space()
1740 struct dquot * const *dquots; in dquot_alloc_inode()
1782 struct dquot **dquots; in dquot_claim_space_nodirty()
1799 struct dquot *dquot = dquots[cnt]; in dquot_claim_space_nodirty() local
1801 spin_lock(&dquot->dq_dqb_lock); in dquot_claim_space_nodirty()
1802 if (WARN_ON_ONCE(dquot->dq_dqb.dqb_rsvspace < number)) in dquot_claim_space_nodirty()
1803 number = dquot->dq_dqb.dqb_rsvspace; in dquot_claim_space_nodirty()
1804 dquot->dq_dqb.dqb_curspace += number; in dquot_claim_space_nodirty()
1805 dquot->dq_dqb.dqb_rsvspace -= number; in dquot_claim_space_nodirty()
1806 spin_unlock(&dquot->dq_dqb_lock); in dquot_claim_space_nodirty()
1824 struct dquot **dquots; in dquot_reclaim_space_nodirty()
1841 struct dquot *dquot = dquots[cnt]; in dquot_reclaim_space_nodirty() local
1843 spin_lock(&dquot->dq_dqb_lock); in dquot_reclaim_space_nodirty()
1844 if (WARN_ON_ONCE(dquot->dq_dqb.dqb_curspace < number)) in dquot_reclaim_space_nodirty()
1845 number = dquot->dq_dqb.dqb_curspace; in dquot_reclaim_space_nodirty()
1846 dquot->dq_dqb.dqb_rsvspace += number; in dquot_reclaim_space_nodirty()
1847 dquot->dq_dqb.dqb_curspace -= number; in dquot_reclaim_space_nodirty()
1848 spin_unlock(&dquot->dq_dqb_lock); in dquot_reclaim_space_nodirty()
1868 struct dquot **dquots; in __dquot_free_space()
1923 struct dquot * const *dquots; in dquot_free_inode()
1964 int __dquot_transfer(struct inode *inode, struct dquot **transfer_to) in __dquot_transfer()
1969 struct dquot *transfer_from[MAXQUOTAS] = {}; in __dquot_transfer()
2092 struct dquot *transfer_to[MAXQUOTAS] = {}; in dquot_transfer()
2093 struct dquot *dquot; in dquot_transfer() local
2101 dquot = dqget(sb, make_kqid_uid(iattr->ia_uid)); in dquot_transfer()
2102 if (IS_ERR(dquot)) { in dquot_transfer()
2103 if (PTR_ERR(dquot) != -ESRCH) { in dquot_transfer()
2104 ret = PTR_ERR(dquot); in dquot_transfer()
2107 dquot = NULL; in dquot_transfer()
2109 transfer_to[USRQUOTA] = dquot; in dquot_transfer()
2112 dquot = dqget(sb, make_kqid_gid(iattr->ia_gid)); in dquot_transfer()
2113 if (IS_ERR(dquot)) { in dquot_transfer()
2114 if (PTR_ERR(dquot) != -ESRCH) { in dquot_transfer()
2115 ret = PTR_ERR(dquot); in dquot_transfer()
2118 dquot = NULL; in dquot_transfer()
2120 transfer_to[GRPQUOTA] = dquot; in dquot_transfer()
2608 static void do_get_dqblk(struct dquot *dquot, struct qc_dqblk *di) in do_get_dqblk() argument
2610 struct mem_dqblk *dm = &dquot->dq_dqb; in do_get_dqblk()
2613 spin_lock(&dquot->dq_dqb_lock); in do_get_dqblk()
2622 spin_unlock(&dquot->dq_dqb_lock); in do_get_dqblk()
2628 struct dquot *dquot; in dquot_get_dqblk() local
2630 dquot = dqget(sb, qid); in dquot_get_dqblk()
2631 if (IS_ERR(dquot)) in dquot_get_dqblk()
2632 return PTR_ERR(dquot); in dquot_get_dqblk()
2633 do_get_dqblk(dquot, di); in dquot_get_dqblk()
2634 dqput(dquot); in dquot_get_dqblk()
2643 struct dquot *dquot; in dquot_get_next_dqblk() local
2651 dquot = dqget(sb, *qid); in dquot_get_next_dqblk()
2652 if (IS_ERR(dquot)) in dquot_get_next_dqblk()
2653 return PTR_ERR(dquot); in dquot_get_next_dqblk()
2654 do_get_dqblk(dquot, di); in dquot_get_next_dqblk()
2655 dqput(dquot); in dquot_get_next_dqblk()
2667 static int do_set_dqblk(struct dquot *dquot, struct qc_dqblk *di) in do_set_dqblk() argument
2669 struct mem_dqblk *dm = &dquot->dq_dqb; in do_set_dqblk()
2671 struct mem_dqinfo *dqi = &sb_dqopt(dquot->dq_sb)->info[dquot->dq_id.type]; in do_set_dqblk()
2686 spin_lock(&dquot->dq_dqb_lock); in do_set_dqblk()
2690 set_bit(DQ_LASTSET_B + QIF_SPACE_B, &dquot->dq_flags); in do_set_dqblk()
2699 set_bit(DQ_LASTSET_B + QIF_BLIMITS_B, &dquot->dq_flags); in do_set_dqblk()
2705 set_bit(DQ_LASTSET_B + QIF_INODES_B, &dquot->dq_flags); in do_set_dqblk()
2714 set_bit(DQ_LASTSET_B + QIF_ILIMITS_B, &dquot->dq_flags); in do_set_dqblk()
2720 set_bit(DQ_LASTSET_B + QIF_BTIME_B, &dquot->dq_flags); in do_set_dqblk()
2726 set_bit(DQ_LASTSET_B + QIF_ITIME_B, &dquot->dq_flags); in do_set_dqblk()
2733 clear_bit(DQ_BLKS_B, &dquot->dq_flags); in do_set_dqblk()
2742 clear_bit(DQ_INODES_B, &dquot->dq_flags); in do_set_dqblk()
2749 clear_bit(DQ_FAKE_B, &dquot->dq_flags); in do_set_dqblk()
2751 set_bit(DQ_FAKE_B, &dquot->dq_flags); in do_set_dqblk()
2752 spin_unlock(&dquot->dq_dqb_lock); in do_set_dqblk()
2753 mark_dquot_dirty(dquot); in do_set_dqblk()
2761 struct dquot *dquot; in dquot_set_dqblk() local
2764 dquot = dqget(sb, qid); in dquot_set_dqblk()
2765 if (IS_ERR(dquot)) { in dquot_set_dqblk()
2766 rc = PTR_ERR(dquot); in dquot_set_dqblk()
2769 rc = do_set_dqblk(dquot, di); in dquot_set_dqblk()
2770 dqput(dquot); in dquot_set_dqblk()
2972 sizeof(struct dquot), sizeof(unsigned long) * 4, in dquot_init()