Lines Matching refs:dquot

254 			      struct dquot *dquot, int *err)  in find_free_dqentry()  argument
286 mark_info_dirty(dquot->dq_sb, dquot->dq_id.type); in find_free_dqentry()
292 quota_error(dquot->dq_sb, "Can't remove block (%u) " in find_free_dqentry()
307 quota_error(dquot->dq_sb, "Data block full but it shouldn't"); in find_free_dqentry()
314 quota_error(dquot->dq_sb, "Can't write quota data block %u", in find_free_dqentry()
318 dquot->dq_off = ((loff_t)blk << info->dqi_blocksize_bits) + in find_free_dqentry()
329 static int do_insert_tree(struct qtree_mem_dqinfo *info, struct dquot *dquot, in do_insert_tree() argument
349 quota_error(dquot->dq_sb, "Can't read tree quota " in do_insert_tree()
355 newblk = le32_to_cpu(ref[get_index(info, dquot->dq_id, depth)]); in do_insert_tree()
356 ret = do_check_range(dquot->dq_sb, "block", newblk, 0, in do_insert_tree()
365 quota_error(dquot->dq_sb, "Inserting already present " in do_insert_tree()
368 dquot->dq_id, depth)])); in do_insert_tree()
373 newblk = find_free_dqentry(info, dquot, &ret); in do_insert_tree()
375 ret = do_insert_tree(info, dquot, &newblk, depth+1); in do_insert_tree()
378 ref[get_index(info, dquot->dq_id, depth)] = in do_insert_tree()
391 struct dquot *dquot) in dq_insert_tree() argument
397 quota_error(dquot->dq_sb, "Quota tree root isn't allocated!"); in dq_insert_tree()
401 return do_insert_tree(info, dquot, &tmp, 0); in dq_insert_tree()
408 int qtree_write_dquot(struct qtree_mem_dqinfo *info, struct dquot *dquot) in qtree_write_dquot() argument
410 int type = dquot->dq_id.type; in qtree_write_dquot()
411 struct super_block *sb = dquot->dq_sb; in qtree_write_dquot()
419 if (!dquot->dq_off) { in qtree_write_dquot()
420 ret = dq_insert_tree(info, dquot); in qtree_write_dquot()
428 spin_lock(&dquot->dq_dqb_lock); in qtree_write_dquot()
429 info->dqi_ops->mem2disk_dqblk(ddquot, dquot); in qtree_write_dquot()
430 spin_unlock(&dquot->dq_dqb_lock); in qtree_write_dquot()
432 dquot->dq_off); in qtree_write_dquot()
448 static int free_dqentry(struct qtree_mem_dqinfo *info, struct dquot *dquot, in free_dqentry() argument
457 if (dquot->dq_off >> info->dqi_blocksize_bits != blk) { in free_dqentry()
458 quota_error(dquot->dq_sb, "Quota structure has offset to " in free_dqentry()
460 (uint)(dquot->dq_off >> info->dqi_blocksize_bits)); in free_dqentry()
466 quota_error(dquot->dq_sb, "Can't read quota data block %u", in free_dqentry()
480 quota_error(dquot->dq_sb, "Can't move quota data block " in free_dqentry()
486 (dquot->dq_off & ((1 << info->dqi_blocksize_bits) - 1)), in free_dqentry()
493 quota_error(dquot->dq_sb, "Can't insert quota " in free_dqentry()
500 quota_error(dquot->dq_sb, "Can't write quota " in free_dqentry()
506 dquot->dq_off = 0; /* Quota is now unattached */ in free_dqentry()
513 static int remove_tree(struct qtree_mem_dqinfo *info, struct dquot *dquot, in remove_tree() argument
525 quota_error(dquot->dq_sb, "Can't read quota data block %u", in remove_tree()
529 newblk = le32_to_cpu(ref[get_index(info, dquot->dq_id, depth)]); in remove_tree()
530 ret = do_check_range(dquot->dq_sb, "block", newblk, QT_TREEOFF, in remove_tree()
536 ret = free_dqentry(info, dquot, newblk); in remove_tree()
539 ret = remove_tree(info, dquot, &newblk, depth+1); in remove_tree()
543 ref[get_index(info, dquot->dq_id, depth)] = cpu_to_le32(0); in remove_tree()
555 quota_error(dquot->dq_sb, in remove_tree()
566 int qtree_delete_dquot(struct qtree_mem_dqinfo *info, struct dquot *dquot) in qtree_delete_dquot() argument
570 if (!dquot->dq_off) /* Even not allocated? */ in qtree_delete_dquot()
572 return remove_tree(info, dquot, &tmp, 0); in qtree_delete_dquot()
578 struct dquot *dquot, uint blk) in find_block_dqentry() argument
589 quota_error(dquot->dq_sb, "Can't read quota tree " in find_block_dqentry()
595 if (info->dqi_ops->is_id(ddquot, dquot)) in find_block_dqentry()
600 quota_error(dquot->dq_sb, in find_block_dqentry()
602 from_kqid(&init_user_ns, dquot->dq_id)); in find_block_dqentry()
616 struct dquot *dquot, uint blk, int depth) in find_tree_dqentry() argument
626 quota_error(dquot->dq_sb, "Can't read quota tree block %u", in find_tree_dqentry()
631 blk = le32_to_cpu(ref[get_index(info, dquot->dq_id, depth)]); in find_tree_dqentry()
634 ret = do_check_range(dquot->dq_sb, "block", blk, QT_TREEOFF, in find_tree_dqentry()
640 ret = find_tree_dqentry(info, dquot, blk, depth+1); in find_tree_dqentry()
642 ret = find_block_dqentry(info, dquot, blk); in find_tree_dqentry()
650 struct dquot *dquot) in find_dqentry() argument
652 return find_tree_dqentry(info, dquot, QT_TREEOFF, 0); in find_dqentry()
655 int qtree_read_dquot(struct qtree_mem_dqinfo *info, struct dquot *dquot) in qtree_read_dquot() argument
657 int type = dquot->dq_id.type; in qtree_read_dquot()
658 struct super_block *sb = dquot->dq_sb; in qtree_read_dquot()
665 if (!sb_dqopt(dquot->dq_sb)->files[type]) { in qtree_read_dquot()
671 if (!dquot->dq_off) { in qtree_read_dquot()
672 offset = find_dqentry(info, dquot); in qtree_read_dquot()
678 dquot->dq_id)); in qtree_read_dquot()
679 dquot->dq_off = 0; in qtree_read_dquot()
680 set_bit(DQ_FAKE_B, &dquot->dq_flags); in qtree_read_dquot()
681 memset(&dquot->dq_dqb, 0, sizeof(struct mem_dqblk)); in qtree_read_dquot()
685 dquot->dq_off = offset; in qtree_read_dquot()
691 dquot->dq_off); in qtree_read_dquot()
696 from_kqid(&init_user_ns, dquot->dq_id)); in qtree_read_dquot()
697 set_bit(DQ_FAKE_B, &dquot->dq_flags); in qtree_read_dquot()
698 memset(&dquot->dq_dqb, 0, sizeof(struct mem_dqblk)); in qtree_read_dquot()
702 spin_lock(&dquot->dq_dqb_lock); in qtree_read_dquot()
703 info->dqi_ops->disk2mem_dqblk(dquot, ddquot); in qtree_read_dquot()
704 if (!dquot->dq_dqb.dqb_bhardlimit && in qtree_read_dquot()
705 !dquot->dq_dqb.dqb_bsoftlimit && in qtree_read_dquot()
706 !dquot->dq_dqb.dqb_ihardlimit && in qtree_read_dquot()
707 !dquot->dq_dqb.dqb_isoftlimit) in qtree_read_dquot()
708 set_bit(DQ_FAKE_B, &dquot->dq_flags); in qtree_read_dquot()
709 spin_unlock(&dquot->dq_dqb_lock); in qtree_read_dquot()
719 int qtree_release_dquot(struct qtree_mem_dqinfo *info, struct dquot *dquot) in qtree_release_dquot() argument
721 if (test_bit(DQ_FAKE_B, &dquot->dq_flags) && in qtree_release_dquot()
722 !(dquot->dq_dqb.dqb_curinodes | dquot->dq_dqb.dqb_curspace)) in qtree_release_dquot()
723 return qtree_delete_dquot(info, dquot); in qtree_release_dquot()