fs/ext2/ext2.h
673
struct dquot __rcu *i_dquot[MAXQUOTAS];
fs/ext2/super.c
344
static struct dquot __rcu **ext2_get_dquots(struct inode *inode)
fs/ext4/ext4.h
1219
struct dquot __rcu *i_dquot[MAXQUOTAS];
fs/ext4/ioctl.c
725
struct dquot *transfer_to[MAXQUOTAS] = { };
fs/ext4/super.c
1617
static int ext4_write_dquot(struct dquot *dquot);
fs/ext4/super.c
1618
static int ext4_acquire_dquot(struct dquot *dquot);
fs/ext4/super.c
1619
static int ext4_release_dquot(struct dquot *dquot);
fs/ext4/super.c
1620
static int ext4_mark_dquot_dirty(struct dquot *dquot);
fs/ext4/super.c
1631
static struct dquot __rcu **ext4_get_dquots(struct inode *inode)
fs/ext4/super.c
6913
struct dquot *dquot;
fs/ext4/super.c
6918
dquot = dqget(sb, qid);
fs/ext4/super.c
6919
if (IS_ERR(dquot))
fs/ext4/super.c
6920
return PTR_ERR(dquot);
fs/ext4/super.c
6921
spin_lock(&dquot->dq_dqb_lock);
fs/ext4/super.c
6923
limit = min_not_zero(dquot->dq_dqb.dqb_bsoftlimit,
fs/ext4/super.c
6924
dquot->dq_dqb.dqb_bhardlimit);
fs/ext4/super.c
6930
curblock = (dquot->dq_dqb.dqb_curspace +
fs/ext4/super.c
6931
dquot->dq_dqb.dqb_rsvspace) >> sb->s_blocksize_bits;
fs/ext4/super.c
6940
limit = min_not_zero(dquot->dq_dqb.dqb_isoftlimit,
fs/ext4/super.c
6941
dquot->dq_dqb.dqb_ihardlimit);
fs/ext4/super.c
6945
if (limit > dquot->dq_dqb.dqb_curinodes)
fs/ext4/super.c
6946
remaining = limit - dquot->dq_dqb.dqb_curinodes;
fs/ext4/super.c
6952
spin_unlock(&dquot->dq_dqb_lock);
fs/ext4/super.c
6953
dqput(dquot);
fs/ext4/super.c
7001
static inline struct inode *dquot_to_inode(struct dquot *dquot)
fs/ext4/super.c
7003
return sb_dqopt(dquot->dq_sb)->files[dquot->dq_id.type];
fs/ext4/super.c
7006
static int ext4_write_dquot(struct dquot *dquot)
fs/ext4/super.c
7012
inode = dquot_to_inode(dquot);
fs/ext4/super.c
7014
EXT4_QUOTA_TRANS_BLOCKS(dquot->dq_sb));
fs/ext4/super.c
7017
ret = dquot_commit(dquot);
fs/ext4/super.c
7019
ext4_error_err(dquot->dq_sb, -ret,
fs/ext4/super.c
7021
dquot->dq_id.type);
fs/ext4/super.c
7028
static int ext4_acquire_dquot(struct dquot *dquot)
fs/ext4/super.c
7033
handle = ext4_journal_start(dquot_to_inode(dquot), EXT4_HT_QUOTA,
fs/ext4/super.c
7034
EXT4_QUOTA_INIT_BLOCKS(dquot->dq_sb));
fs/ext4/super.c
7037
ret = dquot_acquire(dquot);
fs/ext4/super.c
7039
ext4_error_err(dquot->dq_sb, -ret,
fs/ext4/super.c
7041
dquot->dq_id.type);
fs/ext4/super.c
7048
static int ext4_release_dquot(struct dquot *dquot)
fs/ext4/super.c
7060
sb_start_intwrite(dquot->dq_sb);
fs/ext4/super.c
7064
handle = ext4_journal_start(dquot_to_inode(dquot), EXT4_HT_QUOTA,
fs/ext4/super.c
7065
EXT4_QUOTA_DEL_BLOCKS(dquot->dq_sb));
fs/ext4/super.c
7068
dquot_release(dquot);
fs/ext4/super.c
7070
sb_end_intwrite(dquot->dq_sb);
fs/ext4/super.c
7073
ret = dquot_release(dquot);
fs/ext4/super.c
7075
ext4_error_err(dquot->dq_sb, -ret,
fs/ext4/super.c
7077
dquot->dq_id.type);
fs/ext4/super.c
7083
sb_end_intwrite(dquot->dq_sb);
fs/ext4/super.c
7088
static int ext4_mark_dquot_dirty(struct dquot *dquot)
fs/ext4/super.c
7090
struct super_block *sb = dquot->dq_sb;
fs/ext4/super.c
7093
dquot_mark_dquot_dirty(dquot);
fs/ext4/super.c
7094
return ext4_write_dquot(dquot);
fs/ext4/super.c
7096
return dquot_mark_dquot_dirty(dquot);
fs/f2fs/f2fs.h
972
struct dquot __rcu *i_dquot[MAXQUOTAS];
fs/f2fs/file.c
3377
struct dquot *transfer_to[MAXQUOTAS] = {};
fs/f2fs/super.c
2178
struct dquot *dquot;
fs/f2fs/super.c
2183
dquot = dqget(sb, qid);
fs/f2fs/super.c
2184
if (IS_ERR(dquot))
fs/f2fs/super.c
2185
return PTR_ERR(dquot);
fs/f2fs/super.c
2186
spin_lock(&dquot->dq_dqb_lock);
fs/f2fs/super.c
2188
limit = min_not_zero(dquot->dq_dqb.dqb_bsoftlimit,
fs/f2fs/super.c
2189
dquot->dq_dqb.dqb_bhardlimit);
fs/f2fs/super.c
2195
curblock = (dquot->dq_dqb.dqb_curspace +
fs/f2fs/super.c
2196
dquot->dq_dqb.dqb_rsvspace) >> sb->s_blocksize_bits;
fs/f2fs/super.c
2205
limit = min_not_zero(dquot->dq_dqb.dqb_isoftlimit,
fs/f2fs/super.c
2206
dquot->dq_dqb.dqb_ihardlimit);
fs/f2fs/super.c
2211
if (limit > dquot->dq_dqb.dqb_curinodes)
fs/f2fs/super.c
2212
remaining = limit - dquot->dq_dqb.dqb_curinodes;
fs/f2fs/super.c
2218
spin_unlock(&dquot->dq_dqb_lock);
fs/f2fs/super.c
2219
dqput(dquot);
fs/f2fs/super.c
3261
static struct dquot __rcu **f2fs_get_dquots(struct inode *inode)
fs/f2fs/super.c
3589
static int f2fs_dquot_commit(struct dquot *dquot)
fs/f2fs/super.c
3591
struct f2fs_sb_info *sbi = F2FS_SB(dquot->dq_sb);
fs/f2fs/super.c
3595
ret = dquot_commit(dquot);
fs/f2fs/super.c
3602
static int f2fs_dquot_acquire(struct dquot *dquot)
fs/f2fs/super.c
3604
struct f2fs_sb_info *sbi = F2FS_SB(dquot->dq_sb);
fs/f2fs/super.c
3608
ret = dquot_acquire(dquot);
fs/f2fs/super.c
3615
static int f2fs_dquot_release(struct dquot *dquot)
fs/f2fs/super.c
3617
struct f2fs_sb_info *sbi = F2FS_SB(dquot->dq_sb);
fs/f2fs/super.c
3618
int ret = dquot_release(dquot);
fs/f2fs/super.c
3625
static int f2fs_dquot_mark_dquot_dirty(struct dquot *dquot)
fs/f2fs/super.c
3627
struct super_block *sb = dquot->dq_sb;
fs/f2fs/super.c
3629
int ret = dquot_mark_dquot_dirty(dquot);
fs/jfs/jfs_incore.h
95
struct dquot __rcu *i_dquot[MAXQUOTAS];
fs/jfs/super.c
793
static struct dquot __rcu **jfs_get_dquots(struct inode *inode)
fs/ocfs2/file.c
1130
struct dquot *transfer_to[MAXQUOTAS] = { };
fs/ocfs2/inode.h
68
struct dquot __rcu *i_dquot[MAXQUOTAS];
fs/ocfs2/quota.h
100
int __ocfs2_sync_dquot(struct dquot *dquot, int freeing);
fs/ocfs2/quota.h
101
static inline int ocfs2_sync_dquot(struct dquot *dquot)
fs/ocfs2/quota.h
103
return __ocfs2_sync_dquot(dquot, 0);
fs/ocfs2/quota.h
105
static inline int ocfs2_global_release_dquot(struct dquot *dquot)
fs/ocfs2/quota.h
107
return __ocfs2_sync_dquot(dquot, 1);
fs/ocfs2/quota.h
115
int ocfs2_create_local_dquot(struct dquot *dquot);
fs/ocfs2/quota.h
116
int ocfs2_local_release_dquot(handle_t *handle, struct dquot *dquot);
fs/ocfs2/quota.h
117
int ocfs2_local_write_dquot(struct dquot *dquot);
fs/ocfs2/quota.h
28
struct dquot dq_dquot; /* Generic VFS dquot */
fs/ocfs2/quota.h
72
static inline struct ocfs2_dquot *OCFS2_DQUOT(struct dquot *dquot)
fs/ocfs2/quota.h
74
return container_of(dquot, struct ocfs2_dquot, dq_dquot);
fs/ocfs2/quota_global.c
101
d->dqb_id = cpu_to_le32(from_kqid(&init_user_ns, dquot->dq_id));
fs/ocfs2/quota_global.c
102
d->dqb_use_count = cpu_to_le32(OCFS2_DQUOT(dquot)->dq_use_count);
fs/ocfs2/quota_global.c
1027
static struct dquot *ocfs2_alloc_dquot(struct super_block *sb, int type)
fs/ocfs2/quota_global.c
1029
struct ocfs2_dquot *dquot =
fs/ocfs2/quota_global.c
1032
if (!dquot)
fs/ocfs2/quota_global.c
1034
return &dquot->dq_dquot;
fs/ocfs2/quota_global.c
1037
static void ocfs2_destroy_dquot(struct dquot *dquot)
fs/ocfs2/quota_global.c
1039
kmem_cache_free(ocfs2_dquot_cachep, dquot);
fs/ocfs2/quota_global.c
114
static int ocfs2_global_is_id(void *dp, struct dquot *dquot)
fs/ocfs2/quota_global.c
118
sb_dqinfo(dquot->dq_sb, dquot->dq_id.type)->dqi_priv;
fs/ocfs2/quota_global.c
123
return qid_eq(make_kqid(&init_user_ns, dquot->dq_id.type,
fs/ocfs2/quota_global.c
125
dquot->dq_id);
fs/ocfs2/quota_global.c
504
int __ocfs2_sync_dquot(struct dquot *dquot, int freeing)
fs/ocfs2/quota_global.c
507
struct super_block *sb = dquot->dq_sb;
fs/ocfs2/quota_global.c
508
int type = dquot->dq_id.type;
fs/ocfs2/quota_global.c
516
dquot->dq_off);
fs/ocfs2/quota_global.c
529
spin_lock(&dquot->dq_dqb_lock);
fs/ocfs2/quota_global.c
530
spacechange = dquot->dq_dqb.dqb_curspace -
fs/ocfs2/quota_global.c
531
OCFS2_DQUOT(dquot)->dq_origspace;
fs/ocfs2/quota_global.c
532
inodechange = dquot->dq_dqb.dqb_curinodes -
fs/ocfs2/quota_global.c
533
OCFS2_DQUOT(dquot)->dq_originodes;
fs/ocfs2/quota_global.c
534
olditime = dquot->dq_dqb.dqb_itime;
fs/ocfs2/quota_global.c
535
oldbtime = dquot->dq_dqb.dqb_btime;
fs/ocfs2/quota_global.c
536
ocfs2_global_disk2memdqb(dquot, &dqblk);
fs/ocfs2/quota_global.c
537
trace_ocfs2_sync_dquot(from_kqid(&init_user_ns, dquot->dq_id),
fs/ocfs2/quota_global.c
538
dquot->dq_dqb.dqb_curspace,
fs/ocfs2/quota_global.c
540
dquot->dq_dqb.dqb_curinodes,
fs/ocfs2/quota_global.c
542
if (!test_bit(DQ_LASTSET_B + QIF_SPACE_B, &dquot->dq_flags))
fs/ocfs2/quota_global.c
543
dquot->dq_dqb.dqb_curspace += spacechange;
fs/ocfs2/quota_global.c
544
if (!test_bit(DQ_LASTSET_B + QIF_INODES_B, &dquot->dq_flags))
fs/ocfs2/quota_global.c
545
dquot->dq_dqb.dqb_curinodes += inodechange;
fs/ocfs2/quota_global.c
547
if (dquot->dq_dqb.dqb_bsoftlimit &&
fs/ocfs2/quota_global.c
548
dquot->dq_dqb.dqb_curspace > dquot->dq_dqb.dqb_bsoftlimit) {
fs/ocfs2/quota_global.c
549
if (!test_bit(DQ_LASTSET_B + QIF_BTIME_B, &dquot->dq_flags) &&
fs/ocfs2/quota_global.c
551
if (dquot->dq_dqb.dqb_btime > 0)
fs/ocfs2/quota_global.c
552
dquot->dq_dqb.dqb_btime =
fs/ocfs2/quota_global.c
553
min(dquot->dq_dqb.dqb_btime, oldbtime);
fs/ocfs2/quota_global.c
555
dquot->dq_dqb.dqb_btime = oldbtime;
fs/ocfs2/quota_global.c
558
dquot->dq_dqb.dqb_btime = 0;
fs/ocfs2/quota_global.c
559
clear_bit(DQ_BLKS_B, &dquot->dq_flags);
fs/ocfs2/quota_global.c
562
if (dquot->dq_dqb.dqb_isoftlimit &&
fs/ocfs2/quota_global.c
563
dquot->dq_dqb.dqb_curinodes > dquot->dq_dqb.dqb_isoftlimit) {
fs/ocfs2/quota_global.c
564
if (!test_bit(DQ_LASTSET_B + QIF_ITIME_B, &dquot->dq_flags) &&
fs/ocfs2/quota_global.c
566
if (dquot->dq_dqb.dqb_itime > 0)
fs/ocfs2/quota_global.c
567
dquot->dq_dqb.dqb_itime =
fs/ocfs2/quota_global.c
568
min(dquot->dq_dqb.dqb_itime, olditime);
fs/ocfs2/quota_global.c
570
dquot->dq_dqb.dqb_itime = olditime;
fs/ocfs2/quota_global.c
573
dquot->dq_dqb.dqb_itime = 0;
fs/ocfs2/quota_global.c
574
clear_bit(DQ_INODES_B, &dquot->dq_flags);
fs/ocfs2/quota_global.c
577
__clear_bit(DQ_LASTSET_B + QIF_SPACE_B, &dquot->dq_flags);
fs/ocfs2/quota_global.c
578
__clear_bit(DQ_LASTSET_B + QIF_INODES_B, &dquot->dq_flags);
fs/ocfs2/quota_global.c
579
__clear_bit(DQ_LASTSET_B + QIF_BLIMITS_B, &dquot->dq_flags);
fs/ocfs2/quota_global.c
580
__clear_bit(DQ_LASTSET_B + QIF_ILIMITS_B, &dquot->dq_flags);
fs/ocfs2/quota_global.c
581
__clear_bit(DQ_LASTSET_B + QIF_BTIME_B, &dquot->dq_flags);
fs/ocfs2/quota_global.c
582
__clear_bit(DQ_LASTSET_B + QIF_ITIME_B, &dquot->dq_flags);
fs/ocfs2/quota_global.c
583
OCFS2_DQUOT(dquot)->dq_origspace = dquot->dq_dqb.dqb_curspace;
fs/ocfs2/quota_global.c
584
OCFS2_DQUOT(dquot)->dq_originodes = dquot->dq_dqb.dqb_curinodes;
fs/ocfs2/quota_global.c
585
spin_unlock(&dquot->dq_dqb_lock);
fs/ocfs2/quota_global.c
589
" (type=%d, id=%u)\n", dquot->dq_id.type,
fs/ocfs2/quota_global.c
590
(unsigned)from_kqid(&init_user_ns, dquot->dq_id));
fs/ocfs2/quota_global.c
594
OCFS2_DQUOT(dquot)->dq_use_count--;
fs/ocfs2/quota_global.c
595
err = qtree_write_dquot(&info->dqi_gi, dquot);
fs/ocfs2/quota_global.c
598
if (freeing && !OCFS2_DQUOT(dquot)->dq_use_count) {
fs/ocfs2/quota_global.c
599
err = qtree_release_dquot(&info->dqi_gi, dquot);
fs/ocfs2/quota_global.c
617
static int ocfs2_sync_dquot_helper(struct dquot *dquot, unsigned long type)
fs/ocfs2/quota_global.c
620
struct super_block *sb = dquot->dq_sb;
fs/ocfs2/quota_global.c
626
trace_ocfs2_sync_dquot_helper(from_kqid(&init_user_ns, dquot->dq_id),
fs/ocfs2/quota_global.c
627
dquot->dq_id.type,
fs/ocfs2/quota_global.c
629
if (type != dquot->dq_id.type)
fs/ocfs2/quota_global.c
643
status = ocfs2_sync_dquot(dquot);
fs/ocfs2/quota_global.c
647
status = ocfs2_local_write_dquot(dquot);
fs/ocfs2/quota_global.c
683
static int ocfs2_write_dquot(struct dquot *dquot)
fs/ocfs2/quota_global.c
686
struct ocfs2_super *osb = OCFS2_SB(dquot->dq_sb);
fs/ocfs2/quota_global.c
690
trace_ocfs2_write_dquot(from_kqid(&init_user_ns, dquot->dq_id),
fs/ocfs2/quota_global.c
691
dquot->dq_id.type);
fs/ocfs2/quota_global.c
699
down_write(&sb_dqopt(dquot->dq_sb)->dqio_sem);
fs/ocfs2/quota_global.c
701
status = ocfs2_local_write_dquot(dquot);
fs/ocfs2/quota_global.c
703
up_write(&sb_dqopt(dquot->dq_sb)->dqio_sem);
fs/ocfs2/quota_global.c
71
static void ocfs2_global_disk2memdqb(struct dquot *dquot, void *dp)
fs/ocfs2/quota_global.c
74
struct mem_dqblk *m = &dquot->dq_dqb;
fs/ocfs2/quota_global.c
744
static int ocfs2_release_dquot(struct dquot *dquot)
fs/ocfs2/quota_global.c
748
sb_dqinfo(dquot->dq_sb, dquot->dq_id.type)->dqi_priv;
fs/ocfs2/quota_global.c
749
struct ocfs2_super *osb = OCFS2_SB(dquot->dq_sb);
fs/ocfs2/quota_global.c
752
trace_ocfs2_release_dquot(from_kqid(&init_user_ns, dquot->dq_id),
fs/ocfs2/quota_global.c
753
dquot->dq_id.type);
fs/ocfs2/quota_global.c
755
mutex_lock(&dquot->dq_lock);
fs/ocfs2/quota_global.c
757
if (dquot_is_busy(dquot))
fs/ocfs2/quota_global.c
766
dqgrab(dquot);
fs/ocfs2/quota_global.c
768
if (llist_add(&OCFS2_DQUOT(dquot)->list, &osb->dquot_drop_list))
fs/ocfs2/quota_global.c
77
if (!test_bit(DQ_LASTSET_B + QIF_ILIMITS_B, &dquot->dq_flags)) {
fs/ocfs2/quota_global.c
776
ocfs2_calc_qdel_credits(dquot->dq_sb, dquot->dq_id.type));
fs/ocfs2/quota_global.c
782
clear_bit(DQ_ACTIVE_B, &dquot->dq_flags);
fs/ocfs2/quota_global.c
788
status = ocfs2_global_release_dquot(dquot);
fs/ocfs2/quota_global.c
793
status = ocfs2_local_release_dquot(handle, dquot);
fs/ocfs2/quota_global.c
805
dquot->dq_off = 0;
fs/ocfs2/quota_global.c
806
clear_bit(DQ_ACTIVE_B, &dquot->dq_flags);
fs/ocfs2/quota_global.c
81
if (!test_bit(DQ_LASTSET_B + QIF_INODES_B, &dquot->dq_flags))
fs/ocfs2/quota_global.c
812
mutex_unlock(&dquot->dq_lock);
fs/ocfs2/quota_global.c
823
static int ocfs2_acquire_dquot(struct dquot *dquot)
fs/ocfs2/quota_global.c
827
struct super_block *sb = dquot->dq_sb;
fs/ocfs2/quota_global.c
829
int type = dquot->dq_id.type;
fs/ocfs2/quota_global.c
83
if (!test_bit(DQ_LASTSET_B + QIF_BLIMITS_B, &dquot->dq_flags)) {
fs/ocfs2/quota_global.c
835
trace_ocfs2_acquire_dquot(from_kqid(&init_user_ns, dquot->dq_id),
fs/ocfs2/quota_global.c
837
mutex_lock(&dquot->dq_lock);
fs/ocfs2/quota_global.c
852
status = qtree_read_dquot(&info->dqi_gi, dquot);
fs/ocfs2/quota_global.c
857
OCFS2_DQUOT(dquot)->dq_use_count++;
fs/ocfs2/quota_global.c
858
OCFS2_DQUOT(dquot)->dq_origspace = dquot->dq_dqb.dqb_curspace;
fs/ocfs2/quota_global.c
859
OCFS2_DQUOT(dquot)->dq_originodes = dquot->dq_dqb.dqb_curinodes;
fs/ocfs2/quota_global.c
860
if (!dquot->dq_off) { /* No real quota entry? */
fs/ocfs2/quota_global.c
87
if (!test_bit(DQ_LASTSET_B + QIF_SPACE_B, &dquot->dq_flags))
fs/ocfs2/quota_global.c
883
status = qtree_write_dquot(&info->dqi_gi, dquot);
fs/ocfs2/quota_global.c
89
if (!test_bit(DQ_LASTSET_B + QIF_BTIME_B, &dquot->dq_flags))
fs/ocfs2/quota_global.c
897
status = ocfs2_create_local_dquot(dquot);
fs/ocfs2/quota_global.c
900
set_bit(DQ_ACTIVE_B, &dquot->dq_flags);
fs/ocfs2/quota_global.c
902
mutex_unlock(&dquot->dq_lock);
fs/ocfs2/quota_global.c
91
if (!test_bit(DQ_LASTSET_B + QIF_ITIME_B, &dquot->dq_flags))
fs/ocfs2/quota_global.c
93
OCFS2_DQUOT(dquot)->dq_use_count = le32_to_cpu(d->dqb_use_count);
fs/ocfs2/quota_global.c
939
static int ocfs2_mark_dquot_dirty(struct dquot *dquot)
fs/ocfs2/quota_global.c
949
struct super_block *sb = dquot->dq_sb;
fs/ocfs2/quota_global.c
950
int type = dquot->dq_id.type;
fs/ocfs2/quota_global.c
956
trace_ocfs2_mark_dquot_dirty(from_kqid(&init_user_ns, dquot->dq_id),
fs/ocfs2/quota_global.c
96
static void ocfs2_global_mem2diskdqb(void *dp, struct dquot *dquot)
fs/ocfs2/quota_global.c
961
spin_lock(&dquot->dq_dqb_lock);
fs/ocfs2/quota_global.c
962
if (dquot->dq_flags & mask)
fs/ocfs2/quota_global.c
964
spin_unlock(&dquot->dq_dqb_lock);
fs/ocfs2/quota_global.c
968
status = ocfs2_write_dquot(dquot);
fs/ocfs2/quota_global.c
982
status = ocfs2_sync_dquot(dquot);
fs/ocfs2/quota_global.c
988
status = ocfs2_local_write_dquot(dquot);
fs/ocfs2/quota_global.c
99
struct mem_dqblk *m = &dquot->dq_dqb;
fs/ocfs2/quota_local.c
1216
int ocfs2_create_local_dquot(struct dquot *dquot)
fs/ocfs2/quota_local.c
1218
struct super_block *sb = dquot->dq_sb;
fs/ocfs2/quota_local.c
1219
int type = dquot->dq_id.type;
fs/ocfs2/quota_local.c
1222
struct ocfs2_dquot *od = OCFS2_DQUOT(dquot);
fs/ocfs2/quota_local.c
1254
status = ocfs2_local_write_dquot(dquot);
fs/ocfs2/quota_local.c
1276
int ocfs2_local_release_dquot(handle_t *handle, struct dquot *dquot)
fs/ocfs2/quota_local.c
1279
int type = dquot->dq_id.type;
fs/ocfs2/quota_local.c
1280
struct ocfs2_dquot *od = OCFS2_DQUOT(dquot);
fs/ocfs2/quota_local.c
1281
struct super_block *sb = dquot->dq_sb;
fs/ocfs2/quota_local.c
465
struct dquot *dquot;
fs/ocfs2/quota_local.c
498
dquot = dqget(sb,
fs/ocfs2/quota_local.c
501
if (IS_ERR(dquot)) {
fs/ocfs2/quota_local.c
502
status = PTR_ERR(dquot);
fs/ocfs2/quota_local.c
525
spin_lock(&dquot->dq_dqb_lock);
fs/ocfs2/quota_local.c
531
dquot->dq_dqb.dqb_curspace += spacechange;
fs/ocfs2/quota_local.c
532
dquot->dq_dqb.dqb_curinodes += inodechange;
fs/ocfs2/quota_local.c
533
spin_unlock(&dquot->dq_dqb_lock);
fs/ocfs2/quota_local.c
537
status = ocfs2_global_release_dquot(dquot);
fs/ocfs2/quota_local.c
563
dqput(dquot);
fs/ocfs2/quota_local.c
893
int ocfs2_local_write_dquot(struct dquot *dquot)
fs/ocfs2/quota_local.c
895
struct super_block *sb = dquot->dq_sb;
fs/ocfs2/quota_local.c
896
struct ocfs2_dquot *od = OCFS2_DQUOT(dquot);
fs/ocfs2/quota_local.c
898
struct inode *lqinode = sb_dqopt(sb)->files[dquot->dq_id.type];
fs/ocfs2/super.c
123
static struct dquot __rcu **ocfs2_get_dquots(struct inode *inode)
fs/quota/dquot.c
1002
err = sb->dq_op->acquire_dquot(dquot);
fs/quota/dquot.c
1004
dqput(dquot);
fs/quota/dquot.c
1005
dquot = ERR_PTR(err);
fs/quota/dquot.c
1015
WARN_ON_ONCE(hlist_unhashed(&dquot->dq_hash));
fs/quota/dquot.c
1020
return dquot;
fs/quota/dquot.c
1024
static inline struct dquot __rcu **i_dquot(struct inode *inode)
fs/quota/dquot.c
1031
struct dquot __rcu * const *dquots;
fs/quota/dquot.c
1121
struct dquot __rcu **dquots = i_dquot(inode);
fs/quota/dquot.c
1122
struct dquot *dquot = srcu_dereference_check(
fs/quota/dquot.c
1131
if (dquot)
fs/quota/dquot.c
1132
dqput(dquot);
fs/quota/dquot.c
1154
void dquot_free_reserved_space(struct dquot *dquot, qsize_t number)
fs/quota/dquot.c
1156
if (dquot->dq_dqb.dqb_rsvspace >= number)
fs/quota/dquot.c
1157
dquot->dq_dqb.dqb_rsvspace -= number;
fs/quota/dquot.c
1160
dquot->dq_dqb.dqb_rsvspace = 0;
fs/quota/dquot.c
1162
if (dquot->dq_dqb.dqb_curspace + dquot->dq_dqb.dqb_rsvspace <=
fs/quota/dquot.c
1163
dquot->dq_dqb.dqb_bsoftlimit)
fs/quota/dquot.c
1164
dquot->dq_dqb.dqb_btime = (time64_t) 0;
fs/quota/dquot.c
1165
clear_bit(DQ_BLKS_B, &dquot->dq_flags);
fs/quota/dquot.c
1168
static void dquot_decr_inodes(struct dquot *dquot, qsize_t number)
fs/quota/dquot.c
1170
if (sb_dqopt(dquot->dq_sb)->flags & DQUOT_NEGATIVE_USAGE ||
fs/quota/dquot.c
1171
dquot->dq_dqb.dqb_curinodes >= number)
fs/quota/dquot.c
1172
dquot->dq_dqb.dqb_curinodes -= number;
fs/quota/dquot.c
1174
dquot->dq_dqb.dqb_curinodes = 0;
fs/quota/dquot.c
1175
if (dquot->dq_dqb.dqb_curinodes <= dquot->dq_dqb.dqb_isoftlimit)
fs/quota/dquot.c
1176
dquot->dq_dqb.dqb_itime = (time64_t) 0;
fs/quota/dquot.c
1177
clear_bit(DQ_INODES_B, &dquot->dq_flags);
fs/quota/dquot.c
1180
static void dquot_decr_space(struct dquot *dquot, qsize_t number)
fs/quota/dquot.c
1182
if (sb_dqopt(dquot->dq_sb)->flags & DQUOT_NEGATIVE_USAGE ||
fs/quota/dquot.c
1183
dquot->dq_dqb.dqb_curspace >= number)
fs/quota/dquot.c
1184
dquot->dq_dqb.dqb_curspace -= number;
fs/quota/dquot.c
1186
dquot->dq_dqb.dqb_curspace = 0;
fs/quota/dquot.c
1187
if (dquot->dq_dqb.dqb_curspace + dquot->dq_dqb.dqb_rsvspace <=
fs/quota/dquot.c
1188
dquot->dq_dqb.dqb_bsoftlimit)
fs/quota/dquot.c
1189
dquot->dq_dqb.dqb_btime = (time64_t) 0;
fs/quota/dquot.c
1190
clear_bit(DQ_BLKS_B, &dquot->dq_flags);
fs/quota/dquot.c
1199
static int warning_issued(struct dquot *dquot, const int warntype)
fs/quota/dquot.c
1208
return test_and_set_bit(flag, &dquot->dq_flags);
fs/quota/dquot.c
1277
static void prepare_warning(struct dquot_warn *warn, struct dquot *dquot,
fs/quota/dquot.c
1280
if (warning_issued(dquot, warntype))
fs/quota/dquot.c
1283
warn->w_sb = dquot->dq_sb;
fs/quota/dquot.c
1284
warn->w_dq_id = dquot->dq_id;
fs/quota/dquot.c
1307
static int ignore_hardlimit(struct dquot *dquot)
fs/quota/dquot.c
1309
struct mem_dqinfo *info = &sb_dqopt(dquot->dq_sb)->info[dquot->dq_id.type];
fs/quota/dquot.c
1316
static int dquot_add_inodes(struct dquot *dquot, qsize_t inodes,
fs/quota/dquot.c
1322
spin_lock(&dquot->dq_dqb_lock);
fs/quota/dquot.c
1323
newinodes = dquot->dq_dqb.dqb_curinodes + inodes;
fs/quota/dquot.c
1324
if (!sb_has_quota_limits_enabled(dquot->dq_sb, dquot->dq_id.type) ||
fs/quota/dquot.c
1325
test_bit(DQ_FAKE_B, &dquot->dq_flags))
fs/quota/dquot.c
1328
if (dquot->dq_dqb.dqb_ihardlimit &&
fs/quota/dquot.c
1329
newinodes > dquot->dq_dqb.dqb_ihardlimit &&
fs/quota/dquot.c
1330
!ignore_hardlimit(dquot)) {
fs/quota/dquot.c
1331
prepare_warning(warn, dquot, QUOTA_NL_IHARDWARN);
fs/quota/dquot.c
1336
if (dquot->dq_dqb.dqb_isoftlimit &&
fs/quota/dquot.c
1337
newinodes > dquot->dq_dqb.dqb_isoftlimit &&
fs/quota/dquot.c
1338
dquot->dq_dqb.dqb_itime &&
fs/quota/dquot.c
1339
ktime_get_real_seconds() >= dquot->dq_dqb.dqb_itime &&
fs/quota/dquot.c
1340
!ignore_hardlimit(dquot)) {
fs/quota/dquot.c
1341
prepare_warning(warn, dquot, QUOTA_NL_ISOFTLONGWARN);
fs/quota/dquot.c
1346
if (dquot->dq_dqb.dqb_isoftlimit &&
fs/quota/dquot.c
1347
newinodes > dquot->dq_dqb.dqb_isoftlimit &&
fs/quota/dquot.c
1348
dquot->dq_dqb.dqb_itime == 0) {
fs/quota/dquot.c
1349
prepare_warning(warn, dquot, QUOTA_NL_ISOFTWARN);
fs/quota/dquot.c
1350
dquot->dq_dqb.dqb_itime = ktime_get_real_seconds() +
fs/quota/dquot.c
1351
sb_dqopt(dquot->dq_sb)->info[dquot->dq_id.type].dqi_igrace;
fs/quota/dquot.c
1354
dquot->dq_dqb.dqb_curinodes = newinodes;
fs/quota/dquot.c
1357
spin_unlock(&dquot->dq_dqb_lock);
fs/quota/dquot.c
1361
static int dquot_add_space(struct dquot *dquot, qsize_t space,
fs/quota/dquot.c
1366
struct super_block *sb = dquot->dq_sb;
fs/quota/dquot.c
1369
spin_lock(&dquot->dq_dqb_lock);
fs/quota/dquot.c
1370
if (!sb_has_quota_limits_enabled(sb, dquot->dq_id.type) ||
fs/quota/dquot.c
1371
test_bit(DQ_FAKE_B, &dquot->dq_flags))
fs/quota/dquot.c
1374
tspace = dquot->dq_dqb.dqb_curspace + dquot->dq_dqb.dqb_rsvspace
fs/quota/dquot.c
1377
if (dquot->dq_dqb.dqb_bhardlimit &&
fs/quota/dquot.c
1378
tspace > dquot->dq_dqb.dqb_bhardlimit &&
fs/quota/dquot.c
1379
!ignore_hardlimit(dquot)) {
fs/quota/dquot.c
1381
prepare_warning(warn, dquot, QUOTA_NL_BHARDWARN);
fs/quota/dquot.c
1386
if (dquot->dq_dqb.dqb_bsoftlimit &&
fs/quota/dquot.c
1387
tspace > dquot->dq_dqb.dqb_bsoftlimit &&
fs/quota/dquot.c
1388
dquot->dq_dqb.dqb_btime &&
fs/quota/dquot.c
1389
ktime_get_real_seconds() >= dquot->dq_dqb.dqb_btime &&
fs/quota/dquot.c
1390
!ignore_hardlimit(dquot)) {
fs/quota/dquot.c
1392
prepare_warning(warn, dquot, QUOTA_NL_BSOFTLONGWARN);
fs/quota/dquot.c
1397
if (dquot->dq_dqb.dqb_bsoftlimit &&
fs/quota/dquot.c
1398
tspace > dquot->dq_dqb.dqb_bsoftlimit &&
fs/quota/dquot.c
1399
dquot->dq_dqb.dqb_btime == 0) {
fs/quota/dquot.c
1401
prepare_warning(warn, dquot, QUOTA_NL_BSOFTWARN);
fs/quota/dquot.c
1402
dquot->dq_dqb.dqb_btime = ktime_get_real_seconds() +
fs/quota/dquot.c
1403
sb_dqopt(sb)->info[dquot->dq_id.type].dqi_bgrace;
fs/quota/dquot.c
1422
dquot->dq_dqb.dqb_rsvspace += rsv_space;
fs/quota/dquot.c
1423
dquot->dq_dqb.dqb_curspace += space;
fs/quota/dquot.c
1425
spin_unlock(&dquot->dq_dqb_lock);
fs/quota/dquot.c
1429
static int info_idq_free(struct dquot *dquot, qsize_t inodes)
fs/quota/dquot.c
1433
if (test_bit(DQ_FAKE_B, &dquot->dq_flags) ||
fs/quota/dquot.c
1434
dquot->dq_dqb.dqb_curinodes <= dquot->dq_dqb.dqb_isoftlimit ||
fs/quota/dquot.c
1435
!sb_has_quota_limits_enabled(dquot->dq_sb, dquot->dq_id.type))
fs/quota/dquot.c
1438
newinodes = dquot->dq_dqb.dqb_curinodes - inodes;
fs/quota/dquot.c
1439
if (newinodes <= dquot->dq_dqb.dqb_isoftlimit)
fs/quota/dquot.c
1441
if (dquot->dq_dqb.dqb_curinodes >= dquot->dq_dqb.dqb_ihardlimit &&
fs/quota/dquot.c
1442
newinodes < dquot->dq_dqb.dqb_ihardlimit)
fs/quota/dquot.c
1447
static int info_bdq_free(struct dquot *dquot, qsize_t space)
fs/quota/dquot.c
1451
tspace = dquot->dq_dqb.dqb_curspace + dquot->dq_dqb.dqb_rsvspace;
fs/quota/dquot.c
1453
if (test_bit(DQ_FAKE_B, &dquot->dq_flags) ||
fs/quota/dquot.c
1454
tspace <= dquot->dq_dqb.dqb_bsoftlimit)
fs/quota/dquot.c
1457
if (tspace - space <= dquot->dq_dqb.dqb_bsoftlimit)
fs/quota/dquot.c
1459
if (tspace >= dquot->dq_dqb.dqb_bhardlimit &&
fs/quota/dquot.c
1460
tspace - space < dquot->dq_dqb.dqb_bhardlimit)
fs/quota/dquot.c
1483
struct dquot __rcu **dquots;
fs/quota/dquot.c
1484
struct dquot *got[MAXQUOTAS] = {};
fs/quota/dquot.c
1499
struct dquot *dquot;
fs/quota/dquot.c
1530
dquot = dqget(sb, qid);
fs/quota/dquot.c
1531
if (IS_ERR(dquot)) {
fs/quota/dquot.c
1533
if (PTR_ERR(dquot) != -ESRCH) {
fs/quota/dquot.c
1534
ret = PTR_ERR(dquot);
fs/quota/dquot.c
1537
dquot = NULL;
fs/quota/dquot.c
1539
got[cnt] = dquot;
fs/quota/dquot.c
1567
struct dquot *dquot = srcu_dereference_check(
fs/quota/dquot.c
1574
spin_lock(&dquot->dq_dqb_lock);
fs/quota/dquot.c
1575
dquot->dq_dqb.dqb_rsvspace += rsv;
fs/quota/dquot.c
1576
spin_unlock(&dquot->dq_dqb_lock);
fs/quota/dquot.c
1598
struct dquot __rcu **dquots;
fs/quota/dquot.c
1623
struct dquot __rcu **dquots = i_dquot(inode);
fs/quota/dquot.c
1624
struct dquot *put[MAXQUOTAS];
fs/quota/dquot.c
1638
struct dquot __rcu * const *dquots;
fs/quota/dquot.c
1711
struct dquot __rcu **dquots;
fs/quota/dquot.c
1712
struct dquot *dquot;
fs/quota/dquot.c
1732
dquot = srcu_dereference(dquots[cnt], &dquot_srcu);
fs/quota/dquot.c
1733
if (!dquot)
fs/quota/dquot.c
1736
ret = dquot_add_space(dquot, 0, number, flags, &warn[cnt]);
fs/quota/dquot.c
1738
ret = dquot_add_space(dquot, number, 0, flags, &warn[cnt]);
fs/quota/dquot.c
1743
dquot = srcu_dereference(dquots[cnt], &dquot_srcu);
fs/quota/dquot.c
1744
if (!dquot)
fs/quota/dquot.c
1746
spin_lock(&dquot->dq_dqb_lock);
fs/quota/dquot.c
1748
dquot_free_reserved_space(dquot, number);
fs/quota/dquot.c
1750
dquot_decr_space(dquot, number);
fs/quota/dquot.c
1751
spin_unlock(&dquot->dq_dqb_lock);
fs/quota/dquot.c
1781
struct dquot __rcu * const *dquots;
fs/quota/dquot.c
1782
struct dquot *dquot;
fs/quota/dquot.c
1793
dquot = srcu_dereference(dquots[cnt], &dquot_srcu);
fs/quota/dquot.c
1794
if (!dquot)
fs/quota/dquot.c
1796
ret = dquot_add_inodes(dquot, 1, &warn[cnt]);
fs/quota/dquot.c
1799
dquot = srcu_dereference(dquots[cnt], &dquot_srcu);
fs/quota/dquot.c
1800
if (!dquot)
fs/quota/dquot.c
1803
spin_lock(&dquot->dq_dqb_lock);
fs/quota/dquot.c
1804
dquot_decr_inodes(dquot, 1);
fs/quota/dquot.c
1805
spin_unlock(&dquot->dq_dqb_lock);
fs/quota/dquot.c
1826
struct dquot __rcu **dquots;
fs/quota/dquot.c
1827
struct dquot *dquot;
fs/quota/dquot.c
1843
dquot = srcu_dereference(dquots[cnt], &dquot_srcu);
fs/quota/dquot.c
1844
if (dquot) {
fs/quota/dquot.c
1845
spin_lock(&dquot->dq_dqb_lock);
fs/quota/dquot.c
1846
if (WARN_ON_ONCE(dquot->dq_dqb.dqb_rsvspace < number))
fs/quota/dquot.c
1847
number = dquot->dq_dqb.dqb_rsvspace;
fs/quota/dquot.c
1848
dquot->dq_dqb.dqb_curspace += number;
fs/quota/dquot.c
1849
dquot->dq_dqb.dqb_rsvspace -= number;
fs/quota/dquot.c
1850
spin_unlock(&dquot->dq_dqb_lock);
fs/quota/dquot.c
1867
struct dquot __rcu **dquots;
fs/quota/dquot.c
1868
struct dquot *dquot;
fs/quota/dquot.c
1884
dquot = srcu_dereference(dquots[cnt], &dquot_srcu);
fs/quota/dquot.c
1885
if (dquot) {
fs/quota/dquot.c
1886
spin_lock(&dquot->dq_dqb_lock);
fs/quota/dquot.c
1887
if (WARN_ON_ONCE(dquot->dq_dqb.dqb_curspace < number))
fs/quota/dquot.c
1888
number = dquot->dq_dqb.dqb_curspace;
fs/quota/dquot.c
1889
dquot->dq_dqb.dqb_rsvspace += number;
fs/quota/dquot.c
1890
dquot->dq_dqb.dqb_curspace -= number;
fs/quota/dquot.c
1891
spin_unlock(&dquot->dq_dqb_lock);
fs/quota/dquot.c
1910
struct dquot __rcu **dquots;
fs/quota/dquot.c
1911
struct dquot *dquot;
fs/quota/dquot.c
1932
dquot = srcu_dereference(dquots[cnt], &dquot_srcu);
fs/quota/dquot.c
1933
if (!dquot)
fs/quota/dquot.c
1935
spin_lock(&dquot->dq_dqb_lock);
fs/quota/dquot.c
1936
wtype = info_bdq_free(dquot, number);
fs/quota/dquot.c
1938
prepare_warning(&warn[cnt], dquot, wtype);
fs/quota/dquot.c
1940
dquot_free_reserved_space(dquot, number);
fs/quota/dquot.c
1942
dquot_decr_space(dquot, number);
fs/quota/dquot.c
1943
spin_unlock(&dquot->dq_dqb_lock);
fs/quota/dquot.c
1967
struct dquot __rcu * const *dquots;
fs/quota/dquot.c
1968
struct dquot *dquot;
fs/quota/dquot.c
1980
dquot = srcu_dereference(dquots[cnt], &dquot_srcu);
fs/quota/dquot.c
1981
if (!dquot)
fs/quota/dquot.c
1983
spin_lock(&dquot->dq_dqb_lock);
fs/quota/dquot.c
1984
wtype = info_idq_free(dquot, 1);
fs/quota/dquot.c
1986
prepare_warning(&warn[cnt], dquot, wtype);
fs/quota/dquot.c
1987
dquot_decr_inodes(dquot, 1);
fs/quota/dquot.c
1988
spin_unlock(&dquot->dq_dqb_lock);
fs/quota/dquot.c
2009
int __dquot_transfer(struct inode *inode, struct dquot **transfer_to)
fs/quota/dquot.c
2014
struct dquot __rcu **dquots;
fs/quota/dquot.c
2015
struct dquot *transfer_from[MAXQUOTAS] = {};
fs/quota/dquot.c
2113
err = mark_all_dquot_dirty((struct dquot __rcu **)transfer_from);
fs/quota/dquot.c
2116
err = mark_all_dquot_dirty((struct dquot __rcu **)transfer_to);
fs/quota/dquot.c
2153
struct dquot *transfer_to[MAXQUOTAS] = {};
fs/quota/dquot.c
2154
struct dquot *dquot;
fs/quota/dquot.c
2165
dquot = dqget(sb, make_kqid_uid(kuid));
fs/quota/dquot.c
2166
if (IS_ERR(dquot)) {
fs/quota/dquot.c
2167
if (PTR_ERR(dquot) != -ESRCH) {
fs/quota/dquot.c
2168
ret = PTR_ERR(dquot);
fs/quota/dquot.c
2171
dquot = NULL;
fs/quota/dquot.c
2173
transfer_to[USRQUOTA] = dquot;
fs/quota/dquot.c
2179
dquot = dqget(sb, make_kqid_gid(kgid));
fs/quota/dquot.c
2180
if (IS_ERR(dquot)) {
fs/quota/dquot.c
2181
if (PTR_ERR(dquot) != -ESRCH) {
fs/quota/dquot.c
2182
ret = PTR_ERR(dquot);
fs/quota/dquot.c
2185
dquot = NULL;
fs/quota/dquot.c
2187
transfer_to[GRPQUOTA] = dquot;
fs/quota/dquot.c
2687
static void do_get_dqblk(struct dquot *dquot, struct qc_dqblk *di)
fs/quota/dquot.c
2689
struct mem_dqblk *dm = &dquot->dq_dqb;
fs/quota/dquot.c
2692
spin_lock(&dquot->dq_dqb_lock);
fs/quota/dquot.c
2701
spin_unlock(&dquot->dq_dqb_lock);
fs/quota/dquot.c
2707
struct dquot *dquot;
fs/quota/dquot.c
2709
dquot = dqget(sb, qid);
fs/quota/dquot.c
2710
if (IS_ERR(dquot))
fs/quota/dquot.c
2711
return PTR_ERR(dquot);
fs/quota/dquot.c
2712
do_get_dqblk(dquot, di);
fs/quota/dquot.c
2713
dqput(dquot);
fs/quota/dquot.c
2722
struct dquot *dquot;
fs/quota/dquot.c
2730
dquot = dqget(sb, *qid);
fs/quota/dquot.c
2731
if (IS_ERR(dquot))
fs/quota/dquot.c
2732
return PTR_ERR(dquot);
fs/quota/dquot.c
2733
do_get_dqblk(dquot, di);
fs/quota/dquot.c
2734
dqput(dquot);
fs/quota/dquot.c
2746
static int do_set_dqblk(struct dquot *dquot, struct qc_dqblk *di)
fs/quota/dquot.c
2748
struct mem_dqblk *dm = &dquot->dq_dqb;
fs/quota/dquot.c
2750
struct mem_dqinfo *dqi = &sb_dqopt(dquot->dq_sb)->info[dquot->dq_id.type];
fs/quota/dquot.c
2766
spin_lock(&dquot->dq_dqb_lock);
fs/quota/dquot.c
2770
set_bit(DQ_LASTSET_B + QIF_SPACE_B, &dquot->dq_flags);
fs/quota/dquot.c
2779
set_bit(DQ_LASTSET_B + QIF_BLIMITS_B, &dquot->dq_flags);
fs/quota/dquot.c
2785
set_bit(DQ_LASTSET_B + QIF_INODES_B, &dquot->dq_flags);
fs/quota/dquot.c
2794
set_bit(DQ_LASTSET_B + QIF_ILIMITS_B, &dquot->dq_flags);
fs/quota/dquot.c
2800
set_bit(DQ_LASTSET_B + QIF_BTIME_B, &dquot->dq_flags);
fs/quota/dquot.c
2806
set_bit(DQ_LASTSET_B + QIF_ITIME_B, &dquot->dq_flags);
fs/quota/dquot.c
2813
clear_bit(DQ_BLKS_B, &dquot->dq_flags);
fs/quota/dquot.c
2822
clear_bit(DQ_INODES_B, &dquot->dq_flags);
fs/quota/dquot.c
2829
clear_bit(DQ_FAKE_B, &dquot->dq_flags);
fs/quota/dquot.c
2831
set_bit(DQ_FAKE_B, &dquot->dq_flags);
fs/quota/dquot.c
2832
spin_unlock(&dquot->dq_dqb_lock);
fs/quota/dquot.c
2833
ret = mark_dquot_dirty(dquot);
fs/quota/dquot.c
2842
struct dquot *dquot;
fs/quota/dquot.c
2845
dquot = dqget(sb, qid);
fs/quota/dquot.c
2846
if (IS_ERR(dquot)) {
fs/quota/dquot.c
2847
rc = PTR_ERR(dquot);
fs/quota/dquot.c
2850
rc = do_set_dqblk(dquot, di);
fs/quota/dquot.c
2851
dqput(dquot);
fs/quota/dquot.c
290
static inline void insert_dquot_hash(struct dquot *dquot)
fs/quota/dquot.c
293
head = dquot_hash + hashfn(dquot->dq_sb, dquot->dq_id);
fs/quota/dquot.c
294
hlist_add_head(&dquot->dq_hash, head);
fs/quota/dquot.c
297
static inline void remove_dquot_hash(struct dquot *dquot)
fs/quota/dquot.c
299
hlist_del_init(&dquot->dq_hash);
fs/quota/dquot.c
302
static struct dquot *find_dquot(unsigned int hashent, struct super_block *sb,
fs/quota/dquot.c
3033
sizeof(struct dquot), sizeof(unsigned long) * 4,
fs/quota/dquot.c
305
struct dquot *dquot;
fs/quota/dquot.c
307
hlist_for_each_entry(dquot, dquot_hash+hashent, dq_hash)
fs/quota/dquot.c
308
if (dquot->dq_sb == sb && qid_eq(dquot->dq_id, qid))
fs/quota/dquot.c
309
return dquot;
fs/quota/dquot.c
315
static inline void put_dquot_last(struct dquot *dquot)
fs/quota/dquot.c
317
list_add_tail(&dquot->dq_free, &free_dquots);
fs/quota/dquot.c
321
static inline void put_releasing_dquots(struct dquot *dquot)
fs/quota/dquot.c
323
list_add_tail(&dquot->dq_free, &releasing_dquots);
fs/quota/dquot.c
324
set_bit(DQ_RELEASING_B, &dquot->dq_flags);
fs/quota/dquot.c
327
static inline void remove_free_dquot(struct dquot *dquot)
fs/quota/dquot.c
329
if (list_empty(&dquot->dq_free))
fs/quota/dquot.c
331
list_del_init(&dquot->dq_free);
fs/quota/dquot.c
332
if (!test_bit(DQ_RELEASING_B, &dquot->dq_flags))
fs/quota/dquot.c
335
clear_bit(DQ_RELEASING_B, &dquot->dq_flags);
fs/quota/dquot.c
338
static inline void put_inuse(struct dquot *dquot)
fs/quota/dquot.c
342
list_add_tail(&dquot->dq_inuse, &inuse_list);
fs/quota/dquot.c
346
static inline void remove_inuse(struct dquot *dquot)
fs/quota/dquot.c
349
list_del(&dquot->dq_inuse);
fs/quota/dquot.c
355
static void wait_on_dquot(struct dquot *dquot)
fs/quota/dquot.c
357
mutex_lock(&dquot->dq_lock);
fs/quota/dquot.c
358
mutex_unlock(&dquot->dq_lock);
fs/quota/dquot.c
361
static inline int dquot_active(struct dquot *dquot)
fs/quota/dquot.c
363
return test_bit(DQ_ACTIVE_B, &dquot->dq_flags);
fs/quota/dquot.c
366
static struct dquot *__dqgrab(struct dquot *dquot)
fs/quota/dquot.c
369
if (!atomic_read(&dquot->dq_count))
fs/quota/dquot.c
370
remove_free_dquot(dquot);
fs/quota/dquot.c
371
atomic_inc(&dquot->dq_count);
fs/quota/dquot.c
372
return dquot;
fs/quota/dquot.c
380
struct dquot *dqgrab(struct dquot *dquot)
fs/quota/dquot.c
383
WARN_ON_ONCE(!dquot_active(dquot));
fs/quota/dquot.c
384
dquot = __dqgrab(dquot);
fs/quota/dquot.c
387
return dquot;
fs/quota/dquot.c
391
static inline int dquot_dirty(struct dquot *dquot)
fs/quota/dquot.c
393
return test_bit(DQ_MOD_B, &dquot->dq_flags);
fs/quota/dquot.c
396
static inline int mark_dquot_dirty(struct dquot *dquot)
fs/quota/dquot.c
398
return dquot->dq_sb->dq_op->mark_dirty(dquot);
fs/quota/dquot.c
402
int dquot_mark_dquot_dirty(struct dquot *dquot)
fs/quota/dquot.c
406
if (!dquot_active(dquot))
fs/quota/dquot.c
409
if (sb_dqopt(dquot->dq_sb)->flags & DQUOT_NOLIST_DIRTY)
fs/quota/dquot.c
410
return test_and_set_bit(DQ_MOD_B, &dquot->dq_flags);
fs/quota/dquot.c
413
if (dquot_dirty(dquot))
fs/quota/dquot.c
417
if (!test_and_set_bit(DQ_MOD_B, &dquot->dq_flags)) {
fs/quota/dquot.c
418
list_add(&dquot->dq_dirty, &sb_dqopt(dquot->dq_sb)->
fs/quota/dquot.c
419
info[dquot->dq_id.type].dqi_dirty_list);
fs/quota/dquot.c
428
static inline int mark_all_dquot_dirty(struct dquot __rcu * const *dquots)
fs/quota/dquot.c
431
struct dquot *dquot;
fs/quota/dquot.c
435
dquot = srcu_dereference(dquots[cnt], &dquot_srcu);
fs/quota/dquot.c
436
if (dquot)
fs/quota/dquot.c
438
ret = mark_dquot_dirty(dquot);
fs/quota/dquot.c
445
static inline void dqput_all(struct dquot **dquot)
fs/quota/dquot.c
450
dqput(dquot[cnt]);
fs/quota/dquot.c
453
static inline int clear_dquot_dirty(struct dquot *dquot)
fs/quota/dquot.c
455
if (sb_dqopt(dquot->dq_sb)->flags & DQUOT_NOLIST_DIRTY)
fs/quota/dquot.c
456
return test_and_clear_bit(DQ_MOD_B, &dquot->dq_flags);
fs/quota/dquot.c
459
if (!test_and_clear_bit(DQ_MOD_B, &dquot->dq_flags)) {
fs/quota/dquot.c
463
list_del_init(&dquot->dq_dirty);
fs/quota/dquot.c
480
int dquot_acquire(struct dquot *dquot)
fs/quota/dquot.c
484
struct quota_info *dqopt = sb_dqopt(dquot->dq_sb);
fs/quota/dquot.c
486
mutex_lock(&dquot->dq_lock);
fs/quota/dquot.c
488
if (!test_bit(DQ_READ_B, &dquot->dq_flags)) {
fs/quota/dquot.c
489
ret = dqopt->ops[dquot->dq_id.type]->read_dqblk(dquot);
fs/quota/dquot.c
495
set_bit(DQ_READ_B, &dquot->dq_flags);
fs/quota/dquot.c
497
if (!dquot_active(dquot) && !dquot->dq_off) {
fs/quota/dquot.c
498
ret = dqopt->ops[dquot->dq_id.type]->commit_dqblk(dquot);
fs/quota/dquot.c
500
if (info_dirty(&dqopt->info[dquot->dq_id.type])) {
fs/quota/dquot.c
501
ret2 = dqopt->ops[dquot->dq_id.type]->write_file_info(
fs/quota/dquot.c
502
dquot->dq_sb, dquot->dq_id.type);
fs/quota/dquot.c
516
set_bit(DQ_ACTIVE_B, &dquot->dq_flags);
fs/quota/dquot.c
519
mutex_unlock(&dquot->dq_lock);
fs/quota/dquot.c
527
int dquot_commit(struct dquot *dquot)
fs/quota/dquot.c
531
struct quota_info *dqopt = sb_dqopt(dquot->dq_sb);
fs/quota/dquot.c
533
mutex_lock(&dquot->dq_lock);
fs/quota/dquot.c
535
if (!clear_dquot_dirty(dquot))
fs/quota/dquot.c
539
if (dquot_active(dquot))
fs/quota/dquot.c
540
ret = dqopt->ops[dquot->dq_id.type]->commit_dqblk(dquot);
fs/quota/dquot.c
545
mutex_unlock(&dquot->dq_lock);
fs/quota/dquot.c
553
int dquot_release(struct dquot *dquot)
fs/quota/dquot.c
557
struct quota_info *dqopt = sb_dqopt(dquot->dq_sb);
fs/quota/dquot.c
559
mutex_lock(&dquot->dq_lock);
fs/quota/dquot.c
562
if (dquot_is_busy(dquot))
fs/quota/dquot.c
564
if (dqopt->ops[dquot->dq_id.type]->release_dqblk) {
fs/quota/dquot.c
565
ret = dqopt->ops[dquot->dq_id.type]->release_dqblk(dquot);
fs/quota/dquot.c
567
if (info_dirty(&dqopt->info[dquot->dq_id.type])) {
fs/quota/dquot.c
568
ret2 = dqopt->ops[dquot->dq_id.type]->write_file_info(
fs/quota/dquot.c
569
dquot->dq_sb, dquot->dq_id.type);
fs/quota/dquot.c
574
clear_bit(DQ_ACTIVE_B, &dquot->dq_flags);
fs/quota/dquot.c
577
mutex_unlock(&dquot->dq_lock);
fs/quota/dquot.c
582
void dquot_destroy(struct dquot *dquot)
fs/quota/dquot.c
584
kmem_cache_free(dquot_cachep, dquot);
fs/quota/dquot.c
588
static inline void do_destroy_dquot(struct dquot *dquot)
fs/quota/dquot.c
590
dquot->dq_sb->dq_op->destroy_dquot(dquot);
fs/quota/dquot.c
601
struct dquot *dquot, *tmp;
fs/quota/dquot.c
607
list_for_each_entry_safe(dquot, tmp, &inuse_list, dq_inuse) {
fs/quota/dquot.c
608
if (dquot->dq_sb != sb)
fs/quota/dquot.c
610
if (dquot->dq_id.type != type)
fs/quota/dquot.c
613
if (atomic_read(&dquot->dq_count)) {
fs/quota/dquot.c
614
atomic_inc(&dquot->dq_count);
fs/quota/dquot.c
625
atomic_read(&dquot->dq_count) == 1);
fs/quota/dquot.c
626
dqput(dquot);
fs/quota/dquot.c
637
if (test_bit(DQ_RELEASING_B, &dquot->dq_flags)) {
fs/quota/dquot.c
645
remove_dquot_hash(dquot);
fs/quota/dquot.c
646
remove_free_dquot(dquot);
fs/quota/dquot.c
647
remove_inuse(dquot);
fs/quota/dquot.c
648
do_destroy_dquot(dquot);
fs/quota/dquot.c
655
int (*fn)(struct dquot *dquot, unsigned long priv),
fs/quota/dquot.c
658
struct dquot *dquot, *old_dquot = NULL;
fs/quota/dquot.c
664
list_for_each_entry(dquot, &inuse_list, dq_inuse) {
fs/quota/dquot.c
665
if (!dquot_active(dquot))
fs/quota/dquot.c
667
if (dquot->dq_sb != sb)
fs/quota/dquot.c
669
__dqgrab(dquot);
fs/quota/dquot.c
672
old_dquot = dquot;
fs/quota/dquot.c
678
wait_on_dquot(dquot);
fs/quota/dquot.c
679
if (dquot_active(dquot)) {
fs/quota/dquot.c
680
ret = fn(dquot, priv);
fs/quota/dquot.c
695
static inline int dquot_write_dquot(struct dquot *dquot)
fs/quota/dquot.c
697
int ret = dquot->dq_sb->dq_op->write_dquot(dquot);
fs/quota/dquot.c
699
quota_error(dquot->dq_sb, "Can't write quota structure "
fs/quota/dquot.c
702
clear_dquot_dirty(dquot);
fs/quota/dquot.c
711
struct dquot *dquot;
fs/quota/dquot.c
729
dquot = list_first_entry(&dirty, struct dquot,
fs/quota/dquot.c
732
WARN_ON(!dquot_active(dquot));
fs/quota/dquot.c
734
if (test_bit(DQ_RELEASING_B, &dquot->dq_flags)) {
fs/quota/dquot.c
744
__dqgrab(dquot);
fs/quota/dquot.c
746
err = dquot_write_dquot(dquot);
fs/quota/dquot.c
749
dqput(dquot);
fs/quota/dquot.c
811
struct dquot *dquot;
fs/quota/dquot.c
816
dquot = list_first_entry(&free_dquots, struct dquot, dq_free);
fs/quota/dquot.c
817
remove_dquot_hash(dquot);
fs/quota/dquot.c
818
remove_free_dquot(dquot);
fs/quota/dquot.c
819
remove_inuse(dquot);
fs/quota/dquot.c
820
do_destroy_dquot(dquot);
fs/quota/dquot.c
840
struct dquot *dquot;
fs/quota/dquot.c
852
dquot = list_first_entry(&rls_head, struct dquot, dq_free);
fs/quota/dquot.c
853
WARN_ON_ONCE(atomic_read(&dquot->dq_count));
fs/quota/dquot.c
859
if (dquot_dirty(dquot)) {
fs/quota/dquot.c
862
dquot_write_dquot(dquot);
fs/quota/dquot.c
865
if (dquot_active(dquot)) {
fs/quota/dquot.c
867
dquot->dq_sb->dq_op->release_dquot(dquot);
fs/quota/dquot.c
871
remove_free_dquot(dquot);
fs/quota/dquot.c
872
put_dquot_last(dquot);
fs/quota/dquot.c
880
void dqput(struct dquot *dquot)
fs/quota/dquot.c
882
if (!dquot)
fs/quota/dquot.c
885
if (!atomic_read(&dquot->dq_count)) {
fs/quota/dquot.c
886
quota_error(dquot->dq_sb, "trying to free free dquot of %s %d",
fs/quota/dquot.c
887
quotatypes[dquot->dq_id.type],
fs/quota/dquot.c
888
from_kqid(&init_user_ns, dquot->dq_id));
fs/quota/dquot.c
895
if (atomic_read(&dquot->dq_count) > 1) {
fs/quota/dquot.c
897
atomic_dec(&dquot->dq_count);
fs/quota/dquot.c
899
if (!sb_has_quota_active(dquot->dq_sb, dquot->dq_id.type) &&
fs/quota/dquot.c
900
atomic_read(&dquot->dq_count) == 1)
fs/quota/dquot.c
907
WARN_ON_ONCE(!list_empty(&dquot->dq_free));
fs/quota/dquot.c
908
put_releasing_dquots(dquot);
fs/quota/dquot.c
909
atomic_dec(&dquot->dq_count);
fs/quota/dquot.c
915
struct dquot *dquot_alloc(struct super_block *sb, int type)
fs/quota/dquot.c
921
static struct dquot *get_empty_dquot(struct super_block *sb, int type)
fs/quota/dquot.c
923
struct dquot *dquot;
fs/quota/dquot.c
925
dquot = sb->dq_op->alloc_dquot(sb, type);
fs/quota/dquot.c
926
if(!dquot)
fs/quota/dquot.c
929
mutex_init(&dquot->dq_lock);
fs/quota/dquot.c
930
INIT_LIST_HEAD(&dquot->dq_free);
fs/quota/dquot.c
931
INIT_LIST_HEAD(&dquot->dq_inuse);
fs/quota/dquot.c
932
INIT_HLIST_NODE(&dquot->dq_hash);
fs/quota/dquot.c
933
INIT_LIST_HEAD(&dquot->dq_dirty);
fs/quota/dquot.c
934
dquot->dq_sb = sb;
fs/quota/dquot.c
935
dquot->dq_id = make_kqid_invalid(type);
fs/quota/dquot.c
936
atomic_set(&dquot->dq_count, 1);
fs/quota/dquot.c
937
spin_lock_init(&dquot->dq_dqb_lock);
fs/quota/dquot.c
939
return dquot;
fs/quota/dquot.c
950
struct dquot *dqget(struct super_block *sb, struct kqid qid)
fs/quota/dquot.c
953
struct dquot *dquot, *empty = NULL;
fs/quota/dquot.c
966
dquot = ERR_PTR(-ESRCH);
fs/quota/dquot.c
971
dquot = find_dquot(hashent, sb, qid);
fs/quota/dquot.c
972
if (!dquot) {
fs/quota/dquot.c
980
dquot = empty;
fs/quota/dquot.c
982
dquot->dq_id = qid;
fs/quota/dquot.c
984
put_inuse(dquot);
fs/quota/dquot.c
986
insert_dquot_hash(dquot);
fs/quota/dquot.c
990
__dqgrab(dquot);
fs/quota/dquot.c
997
wait_on_dquot(dquot);
fs/quota/dquot.c
999
if (!dquot_active(dquot)) {
fs/quota/quota_tree.c
260
struct dquot *dquot, int *err)
fs/quota/quota_tree.c
292
mark_info_dirty(dquot->dq_sb, dquot->dq_id.type);
fs/quota/quota_tree.c
298
quota_error(dquot->dq_sb, "Can't remove block (%u) "
fs/quota/quota_tree.c
313
quota_error(dquot->dq_sb, "Data block full but it shouldn't");
fs/quota/quota_tree.c
320
quota_error(dquot->dq_sb, "Can't write quota data block %u",
fs/quota/quota_tree.c
324
dquot->dq_off = ((loff_t)blk << info->dqi_blocksize_bits) +
fs/quota/quota_tree.c
335
static int do_insert_tree(struct qtree_mem_dqinfo *info, struct dquot *dquot,
fs/quota/quota_tree.c
352
quota_error(dquot->dq_sb,
fs/quota/quota_tree.c
364
quota_error(dquot->dq_sb, "Can't read tree quota "
fs/quota/quota_tree.c
370
newblk = le32_to_cpu(ref[get_index(info, dquot->dq_id, depth)]);
fs/quota/quota_tree.c
371
ret = do_check_range(dquot->dq_sb, "block", newblk, 0,
fs/quota/quota_tree.c
380
quota_error(dquot->dq_sb,
fs/quota/quota_tree.c
383
get_index(info, dquot->dq_id, depth));
fs/quota/quota_tree.c
392
quota_error(dquot->dq_sb, "Inserting already present "
fs/quota/quota_tree.c
395
dquot->dq_id, depth)]));
fs/quota/quota_tree.c
400
blks[depth + 1] = find_free_dqentry(info, dquot, &ret);
fs/quota/quota_tree.c
402
ret = do_insert_tree(info, dquot, blks, depth + 1);
fs/quota/quota_tree.c
405
ref[get_index(info, dquot->dq_id, depth)] =
fs/quota/quota_tree.c
418
struct dquot *dquot)
fs/quota/quota_tree.c
424
quota_error(dquot->dq_sb, "Quota tree root isn't allocated!");
fs/quota/quota_tree.c
429
quota_error(dquot->dq_sb, "Quota tree depth too big!");
fs/quota/quota_tree.c
432
return do_insert_tree(info, dquot, blks, 0);
fs/quota/quota_tree.c
439
int qtree_write_dquot(struct qtree_mem_dqinfo *info, struct dquot *dquot)
fs/quota/quota_tree.c
441
int type = dquot->dq_id.type;
fs/quota/quota_tree.c
442
struct super_block *sb = dquot->dq_sb;
fs/quota/quota_tree.c
450
if (!dquot->dq_off) {
fs/quota/quota_tree.c
451
ret = dq_insert_tree(info, dquot);
fs/quota/quota_tree.c
459
spin_lock(&dquot->dq_dqb_lock);
fs/quota/quota_tree.c
460
info->dqi_ops->mem2disk_dqblk(ddquot, dquot);
fs/quota/quota_tree.c
461
spin_unlock(&dquot->dq_dqb_lock);
fs/quota/quota_tree.c
463
dquot->dq_off);
fs/quota/quota_tree.c
479
static int free_dqentry(struct qtree_mem_dqinfo *info, struct dquot *dquot,
fs/quota/quota_tree.c
488
if (dquot->dq_off >> info->dqi_blocksize_bits != blk) {
fs/quota/quota_tree.c
489
quota_error(dquot->dq_sb, "Quota structure has offset to "
fs/quota/quota_tree.c
491
(uint)(dquot->dq_off >> info->dqi_blocksize_bits));
fs/quota/quota_tree.c
497
quota_error(dquot->dq_sb, "Can't read quota data block %u",
fs/quota/quota_tree.c
511
quota_error(dquot->dq_sb, "Can't move quota data block "
fs/quota/quota_tree.c
517
(dquot->dq_off & ((1 << info->dqi_blocksize_bits) - 1)),
fs/quota/quota_tree.c
524
quota_error(dquot->dq_sb, "Can't insert quota "
fs/quota/quota_tree.c
531
quota_error(dquot->dq_sb, "Can't write quota "
fs/quota/quota_tree.c
537
dquot->dq_off = 0; /* Quota is now unattached */
fs/quota/quota_tree.c
544
static int remove_tree(struct qtree_mem_dqinfo *info, struct dquot *dquot,
fs/quota/quota_tree.c
557
quota_error(dquot->dq_sb, "Can't read quota data block %u",
fs/quota/quota_tree.c
561
newblk = le32_to_cpu(ref[get_index(info, dquot->dq_id, depth)]);
fs/quota/quota_tree.c
562
ret = do_check_range(dquot->dq_sb, "block", newblk, QT_TREEOFF,
fs/quota/quota_tree.c
569
quota_error(dquot->dq_sb,
fs/quota/quota_tree.c
572
get_index(info, dquot->dq_id, depth));
fs/quota/quota_tree.c
577
ret = free_dqentry(info, dquot, newblk);
fs/quota/quota_tree.c
581
ret = remove_tree(info, dquot, blks, depth + 1);
fs/quota/quota_tree.c
584
ref[get_index(info, dquot->dq_id, depth)] = cpu_to_le32(0);
fs/quota/quota_tree.c
596
quota_error(dquot->dq_sb,
fs/quota/quota_tree.c
607
int qtree_delete_dquot(struct qtree_mem_dqinfo *info, struct dquot *dquot)
fs/quota/quota_tree.c
611
if (!dquot->dq_off) /* Even not allocated? */
fs/quota/quota_tree.c
614
quota_error(dquot->dq_sb, "Quota tree depth too big!");
fs/quota/quota_tree.c
617
return remove_tree(info, dquot, blks, 0);
fs/quota/quota_tree.c
623
struct dquot *dquot, uint blk)
fs/quota/quota_tree.c
634
quota_error(dquot->dq_sb, "Can't read quota tree "
fs/quota/quota_tree.c
640
if (info->dqi_ops->is_id(ddquot, dquot))
fs/quota/quota_tree.c
645
quota_error(dquot->dq_sb,
fs/quota/quota_tree.c
647
from_kqid(&init_user_ns, dquot->dq_id));
fs/quota/quota_tree.c
661
struct dquot *dquot, uint *blks, int depth)
fs/quota/quota_tree.c
673
quota_error(dquot->dq_sb, "Can't read quota tree block %u",
fs/quota/quota_tree.c
678
blk = le32_to_cpu(ref[get_index(info, dquot->dq_id, depth)]);
fs/quota/quota_tree.c
681
ret = do_check_range(dquot->dq_sb, "block", blk, QT_TREEOFF,
fs/quota/quota_tree.c
689
quota_error(dquot->dq_sb,
fs/quota/quota_tree.c
692
get_index(info, dquot->dq_id, depth));
fs/quota/quota_tree.c
698
ret = find_tree_dqentry(info, dquot, blks, depth + 1);
fs/quota/quota_tree.c
700
ret = find_block_dqentry(info, dquot, blk);
fs/quota/quota_tree.c
708
struct dquot *dquot)
fs/quota/quota_tree.c
713
quota_error(dquot->dq_sb, "Quota tree depth too big!");
fs/quota/quota_tree.c
716
return find_tree_dqentry(info, dquot, blks, 0);
fs/quota/quota_tree.c
719
int qtree_read_dquot(struct qtree_mem_dqinfo *info, struct dquot *dquot)
fs/quota/quota_tree.c
721
int type = dquot->dq_id.type;
fs/quota/quota_tree.c
722
struct super_block *sb = dquot->dq_sb;
fs/quota/quota_tree.c
729
if (!sb_dqopt(dquot->dq_sb)->files[type]) {
fs/quota/quota_tree.c
735
if (!dquot->dq_off) {
fs/quota/quota_tree.c
736
offset = find_dqentry(info, dquot);
fs/quota/quota_tree.c
742
dquot->dq_id));
fs/quota/quota_tree.c
743
dquot->dq_off = 0;
fs/quota/quota_tree.c
744
set_bit(DQ_FAKE_B, &dquot->dq_flags);
fs/quota/quota_tree.c
745
memset(&dquot->dq_dqb, 0, sizeof(struct mem_dqblk));
fs/quota/quota_tree.c
749
dquot->dq_off = offset;
fs/quota/quota_tree.c
755
dquot->dq_off);
fs/quota/quota_tree.c
760
from_kqid(&init_user_ns, dquot->dq_id));
fs/quota/quota_tree.c
761
set_bit(DQ_FAKE_B, &dquot->dq_flags);
fs/quota/quota_tree.c
762
memset(&dquot->dq_dqb, 0, sizeof(struct mem_dqblk));
fs/quota/quota_tree.c
766
spin_lock(&dquot->dq_dqb_lock);
fs/quota/quota_tree.c
767
info->dqi_ops->disk2mem_dqblk(dquot, ddquot);
fs/quota/quota_tree.c
768
if (!dquot->dq_dqb.dqb_bhardlimit &&
fs/quota/quota_tree.c
769
!dquot->dq_dqb.dqb_bsoftlimit &&
fs/quota/quota_tree.c
770
!dquot->dq_dqb.dqb_ihardlimit &&
fs/quota/quota_tree.c
771
!dquot->dq_dqb.dqb_isoftlimit)
fs/quota/quota_tree.c
772
set_bit(DQ_FAKE_B, &dquot->dq_flags);
fs/quota/quota_tree.c
773
spin_unlock(&dquot->dq_dqb_lock);
fs/quota/quota_tree.c
783
int qtree_release_dquot(struct qtree_mem_dqinfo *info, struct dquot *dquot)
fs/quota/quota_tree.c
785
if (test_bit(DQ_FAKE_B, &dquot->dq_flags) &&
fs/quota/quota_tree.c
786
!(dquot->dq_dqb.dqb_curinodes | dquot->dq_dqb.dqb_curspace))
fs/quota/quota_tree.c
787
return qtree_delete_dquot(info, dquot);
fs/quota/quota_v1.c
100
v1_dqoff(from_kqid(&init_user_ns, dquot->dq_id)));
fs/quota/quota_v1.c
102
quota_error(dquot->dq_sb, "dquota write failed");
fs/quota/quota_v1.c
56
static int v1_read_dqblk(struct dquot *dquot)
fs/quota/quota_v1.c
58
int type = dquot->dq_id.type;
fs/quota/quota_v1.c
60
struct quota_info *dqopt = sb_dqopt(dquot->dq_sb);
fs/quota/quota_v1.c
67
dquot->dq_sb->s_op->quota_read(dquot->dq_sb, type, (char *)&dqblk,
fs/quota/quota_v1.c
69
v1_dqoff(from_kqid(&init_user_ns, dquot->dq_id)));
fs/quota/quota_v1.c
71
v1_disk2mem_dqblk(&dquot->dq_dqb, &dqblk);
fs/quota/quota_v1.c
72
if (dquot->dq_dqb.dqb_bhardlimit == 0 &&
fs/quota/quota_v1.c
73
dquot->dq_dqb.dqb_bsoftlimit == 0 &&
fs/quota/quota_v1.c
74
dquot->dq_dqb.dqb_ihardlimit == 0 &&
fs/quota/quota_v1.c
75
dquot->dq_dqb.dqb_isoftlimit == 0)
fs/quota/quota_v1.c
76
set_bit(DQ_FAKE_B, &dquot->dq_flags);
fs/quota/quota_v1.c
82
static int v1_commit_dqblk(struct dquot *dquot)
fs/quota/quota_v1.c
84
short type = dquot->dq_id.type;
fs/quota/quota_v1.c
88
v1_mem2disk_dqblk(&dqblk, &dquot->dq_dqb);
fs/quota/quota_v1.c
89
if (((type == USRQUOTA) && uid_eq(dquot->dq_id.uid, GLOBAL_ROOT_UID)) ||
fs/quota/quota_v1.c
90
((type == GRPQUOTA) && gid_eq(dquot->dq_id.gid, GLOBAL_ROOT_GID))) {
fs/quota/quota_v1.c
92
sb_dqopt(dquot->dq_sb)->info[type].dqi_bgrace;
fs/quota/quota_v1.c
94
sb_dqopt(dquot->dq_sb)->info[type].dqi_igrace;
fs/quota/quota_v1.c
97
if (sb_dqopt(dquot->dq_sb)->files[type])
fs/quota/quota_v1.c
98
ret = dquot->dq_sb->s_op->quota_write(dquot->dq_sb, type,
fs/quota/quota_v2.c
229
static void v2r0_disk2memdqb(struct dquot *dquot, void *dp)
fs/quota/quota_v2.c
232
struct mem_dqblk *m = &dquot->dq_dqb;
fs/quota/quota_v2.c
249
static void v2r0_mem2diskdqb(void *dp, struct dquot *dquot)
fs/quota/quota_v2.c
25
static void v2r0_mem2diskdqb(void *dp, struct dquot *dquot);
fs/quota/quota_v2.c
252
struct mem_dqblk *m = &dquot->dq_dqb;
fs/quota/quota_v2.c
254
sb_dqinfo(dquot->dq_sb, dquot->dq_id.type)->dqi_priv;
fs/quota/quota_v2.c
26
static void v2r0_disk2memdqb(struct dquot *dquot, void *dp);
fs/quota/quota_v2.c
264
d->dqb_id = cpu_to_le32(from_kqid(&init_user_ns, dquot->dq_id));
fs/quota/quota_v2.c
269
static int v2r0_is_id(void *dp, struct dquot *dquot)
fs/quota/quota_v2.c
27
static int v2r0_is_id(void *dp, struct dquot *dquot);
fs/quota/quota_v2.c
273
sb_dqinfo(dquot->dq_sb, dquot->dq_id.type)->dqi_priv;
fs/quota/quota_v2.c
277
return qid_eq(make_kqid(&init_user_ns, dquot->dq_id.type,
fs/quota/quota_v2.c
279
dquot->dq_id);
fs/quota/quota_v2.c
28
static void v2r1_mem2diskdqb(void *dp, struct dquot *dquot);
fs/quota/quota_v2.c
282
static void v2r1_disk2memdqb(struct dquot *dquot, void *dp)
fs/quota/quota_v2.c
285
struct mem_dqblk *m = &dquot->dq_dqb;
fs/quota/quota_v2.c
29
static void v2r1_disk2memdqb(struct dquot *dquot, void *dp);
fs/quota/quota_v2.c
30
static int v2r1_is_id(void *dp, struct dquot *dquot);
fs/quota/quota_v2.c
302
static void v2r1_mem2diskdqb(void *dp, struct dquot *dquot)
fs/quota/quota_v2.c
305
struct mem_dqblk *m = &dquot->dq_dqb;
fs/quota/quota_v2.c
307
sb_dqinfo(dquot->dq_sb, dquot->dq_id.type)->dqi_priv;
fs/quota/quota_v2.c
317
d->dqb_id = cpu_to_le32(from_kqid(&init_user_ns, dquot->dq_id));
fs/quota/quota_v2.c
323
static int v2r1_is_id(void *dp, struct dquot *dquot)
fs/quota/quota_v2.c
327
sb_dqinfo(dquot->dq_sb, dquot->dq_id.type)->dqi_priv;
fs/quota/quota_v2.c
331
return qid_eq(make_kqid(&init_user_ns, dquot->dq_id.type,
fs/quota/quota_v2.c
333
dquot->dq_id);
fs/quota/quota_v2.c
336
static int v2_read_dquot(struct dquot *dquot)
fs/quota/quota_v2.c
338
struct quota_info *dqopt = sb_dqopt(dquot->dq_sb);
fs/quota/quota_v2.c
345
sb_dqinfo(dquot->dq_sb, dquot->dq_id.type)->dqi_priv,
fs/quota/quota_v2.c
346
dquot);
fs/quota/quota_v2.c
352
static int v2_write_dquot(struct dquot *dquot)
fs/quota/quota_v2.c
354
struct quota_info *dqopt = sb_dqopt(dquot->dq_sb);
fs/quota/quota_v2.c
365
if (!dquot->dq_off) {
fs/quota/quota_v2.c
373
sb_dqinfo(dquot->dq_sb, dquot->dq_id.type)->dqi_priv,
fs/quota/quota_v2.c
374
dquot);
fs/quota/quota_v2.c
383
static int v2_release_dquot(struct dquot *dquot)
fs/quota/quota_v2.c
385
struct quota_info *dqopt = sb_dqopt(dquot->dq_sb);
fs/quota/quota_v2.c
391
ret = qtree_release_dquot(sb_dqinfo(dquot->dq_sb, dquot->dq_id.type)->dqi_priv, dquot);
include/linux/dqblk_qtree.h
18
struct dquot;
include/linux/dqblk_qtree.h
23
void (*mem2disk_dqblk)(void *disk, struct dquot *dquot); /* Convert given entry from in memory format to disk one */
include/linux/dqblk_qtree.h
24
void (*disk2mem_dqblk)(struct dquot *dquot, void *disk); /* Convert given entry from disk format to in memory one */
include/linux/dqblk_qtree.h
25
int (*is_id)(void *disk, struct dquot *dquot); /* Is this structure for given id? */
include/linux/dqblk_qtree.h
42
int qtree_write_dquot(struct qtree_mem_dqinfo *info, struct dquot *dquot);
include/linux/dqblk_qtree.h
43
int qtree_read_dquot(struct qtree_mem_dqinfo *info, struct dquot *dquot);
include/linux/dqblk_qtree.h
44
int qtree_delete_dquot(struct qtree_mem_dqinfo *info, struct dquot *dquot);
include/linux/dqblk_qtree.h
45
int qtree_release_dquot(struct qtree_mem_dqinfo *info, struct dquot *dquot);
include/linux/fs/super_types.h
111
struct dquot __rcu **(*get_dquots)(struct inode *inode);
include/linux/quota.h
317
int (*read_dqblk)(struct dquot *dquot); /* Read structure for one user */
include/linux/quota.h
318
int (*commit_dqblk)(struct dquot *dquot); /* Write structure for one user */
include/linux/quota.h
319
int (*release_dqblk)(struct dquot *dquot); /* Called when last reference to dquot is being dropped */
include/linux/quota.h
325
int (*write_dquot) (struct dquot *); /* Ordinary dquot write */
include/linux/quota.h
326
struct dquot *(*alloc_dquot)(struct super_block *, int); /* Allocate memory for new dquot */
include/linux/quota.h
327
void (*destroy_dquot)(struct dquot *); /* Free memory for dquot */
include/linux/quota.h
328
int (*acquire_dquot) (struct dquot *); /* Quota is going to be created on disk */
include/linux/quota.h
329
int (*release_dquot) (struct dquot *); /* Quota is going to be deleted from disk */
include/linux/quota.h
330
int (*mark_dirty) (struct dquot *); /* Dquot is marked dirty */
include/linux/quotaops.h
111
int __dquot_transfer(struct inode *inode, struct dquot **transfer_to);
include/linux/quotaops.h
46
struct dquot *dqget(struct super_block *sb, struct kqid qid);
include/linux/quotaops.h
47
struct dquot *dqgrab(struct dquot *dquot);
include/linux/quotaops.h
49
static inline bool dquot_is_busy(struct dquot *dquot)
include/linux/quotaops.h
51
if (test_bit(DQ_MOD_B, &dquot->dq_flags))
include/linux/quotaops.h
53
if (atomic_read(&dquot->dq_count) > 0)
include/linux/quotaops.h
58
void dqput(struct dquot *dquot);
include/linux/quotaops.h
60
int (*fn)(struct dquot *dquot, unsigned long priv),
include/linux/quotaops.h
62
struct dquot *dquot_alloc(struct super_block *sb, int type);
include/linux/quotaops.h
63
void dquot_destroy(struct dquot *dquot);
include/linux/quotaops.h
82
int dquot_commit(struct dquot *dquot);
include/linux/quotaops.h
83
int dquot_acquire(struct dquot *dquot);
include/linux/quotaops.h
84
int dquot_release(struct dquot *dquot);
include/linux/quotaops.h
87
int dquot_mark_dquot_dirty(struct dquot *dquot);
include/linux/shmem_fs.h
56
struct dquot __rcu *i_dquot[MAXQUOTAS];
mm/shmem.c
331
static struct dquot __rcu **shmem_get_dquots(struct inode *inode)
mm/shmem_quota.c
164
static int shmem_acquire_dquot(struct dquot *dquot)
mm/shmem_quota.c
166
struct mem_dqinfo *info = sb_dqinfo(dquot->dq_sb, dquot->dq_id.type);
mm/shmem_quota.c
168
struct shmem_sb_info *sbinfo = dquot->dq_sb->s_fs_info;
mm/shmem_quota.c
171
qid_t id = from_kqid(&init_user_ns, dquot->dq_id);
mm/shmem_quota.c
172
struct quota_info *dqopt = sb_dqopt(dquot->dq_sb);
mm/shmem_quota.c
175
mutex_lock(&dquot->dq_lock);
mm/shmem_quota.c
200
if (dquot->dq_id.type == USRQUOTA) {
mm/shmem_quota.c
203
} else if (dquot->dq_id.type == GRPQUOTA) {
mm/shmem_quota.c
215
spin_lock(&dquot->dq_dqb_lock);
mm/shmem_quota.c
216
dquot->dq_dqb.dqb_bhardlimit = entry->bhardlimit;
mm/shmem_quota.c
217
dquot->dq_dqb.dqb_bsoftlimit = entry->bsoftlimit;
mm/shmem_quota.c
218
dquot->dq_dqb.dqb_ihardlimit = entry->ihardlimit;
mm/shmem_quota.c
219
dquot->dq_dqb.dqb_isoftlimit = entry->isoftlimit;
mm/shmem_quota.c
221
if (!dquot->dq_dqb.dqb_bhardlimit &&
mm/shmem_quota.c
222
!dquot->dq_dqb.dqb_bsoftlimit &&
mm/shmem_quota.c
223
!dquot->dq_dqb.dqb_ihardlimit &&
mm/shmem_quota.c
224
!dquot->dq_dqb.dqb_isoftlimit)
mm/shmem_quota.c
225
set_bit(DQ_FAKE_B, &dquot->dq_flags);
mm/shmem_quota.c
226
spin_unlock(&dquot->dq_dqb_lock);
mm/shmem_quota.c
230
set_bit(DQ_ACTIVE_B, &dquot->dq_flags);
mm/shmem_quota.c
233
mutex_unlock(&dquot->dq_lock);
mm/shmem_quota.c
237
static bool shmem_is_empty_dquot(struct dquot *dquot)
mm/shmem_quota.c
239
struct shmem_sb_info *sbinfo = dquot->dq_sb->s_fs_info;
mm/shmem_quota.c
243
if (dquot->dq_id.type == USRQUOTA) {
mm/shmem_quota.c
246
} else if (dquot->dq_id.type == GRPQUOTA) {
mm/shmem_quota.c
251
if (test_bit(DQ_FAKE_B, &dquot->dq_flags) ||
mm/shmem_quota.c
252
(dquot->dq_dqb.dqb_curspace == 0 &&
mm/shmem_quota.c
253
dquot->dq_dqb.dqb_curinodes == 0 &&
mm/shmem_quota.c
254
dquot->dq_dqb.dqb_bhardlimit == bhardlimit &&
mm/shmem_quota.c
255
dquot->dq_dqb.dqb_ihardlimit == ihardlimit))
mm/shmem_quota.c
265
static int shmem_release_dquot(struct dquot *dquot)
mm/shmem_quota.c
267
struct mem_dqinfo *info = sb_dqinfo(dquot->dq_sb, dquot->dq_id.type);
mm/shmem_quota.c
269
qid_t id = from_kqid(&init_user_ns, dquot->dq_id);
mm/shmem_quota.c
270
struct quota_info *dqopt = sb_dqopt(dquot->dq_sb);
mm/shmem_quota.c
273
mutex_lock(&dquot->dq_lock);
mm/shmem_quota.c
275
if (dquot_is_busy(dquot))
mm/shmem_quota.c
292
WARN_ONCE(1, "quota id %u from dquot %p, not in rb tree!\n", id, dquot);
mm/shmem_quota.c
294
mutex_unlock(&dquot->dq_lock);
mm/shmem_quota.c
298
if (shmem_is_empty_dquot(dquot)) {
mm/shmem_quota.c
304
spin_lock(&dquot->dq_dqb_lock);
mm/shmem_quota.c
305
entry->bhardlimit = dquot->dq_dqb.dqb_bhardlimit;
mm/shmem_quota.c
306
entry->bsoftlimit = dquot->dq_dqb.dqb_bsoftlimit;
mm/shmem_quota.c
307
entry->ihardlimit = dquot->dq_dqb.dqb_ihardlimit;
mm/shmem_quota.c
308
entry->isoftlimit = dquot->dq_dqb.dqb_isoftlimit;
mm/shmem_quota.c
309
spin_unlock(&dquot->dq_dqb_lock);
mm/shmem_quota.c
312
clear_bit(DQ_ACTIVE_B, &dquot->dq_flags);
mm/shmem_quota.c
316
mutex_unlock(&dquot->dq_lock);
mm/shmem_quota.c
320
static int shmem_mark_dquot_dirty(struct dquot *dquot)