Home
last modified time | relevance | path

Searched refs:dquot (Results 1 – 25 of 34) sorted by relevance

12

/linux-6.12.1/fs/quota/
Ddquot.c288 static inline void insert_dquot_hash(struct dquot *dquot) in insert_dquot_hash() argument
291 head = dquot_hash + hashfn(dquot->dq_sb, dquot->dq_id); in insert_dquot_hash()
292 hlist_add_head(&dquot->dq_hash, head); in insert_dquot_hash()
295 static inline void remove_dquot_hash(struct dquot *dquot) in remove_dquot_hash() argument
297 hlist_del_init(&dquot->dq_hash); in remove_dquot_hash()
300 static struct dquot *find_dquot(unsigned int hashent, struct super_block *sb, in find_dquot()
303 struct dquot *dquot; in find_dquot() local
305 hlist_for_each_entry(dquot, dquot_hash+hashent, dq_hash) in find_dquot()
306 if (dquot->dq_sb == sb && qid_eq(dquot->dq_id, qid)) in find_dquot()
307 return dquot; in find_dquot()
[all …]
Dquota_tree.c260 struct dquot *dquot, int *err) in find_free_dqentry() argument
292 mark_info_dirty(dquot->dq_sb, dquot->dq_id.type); in find_free_dqentry()
298 quota_error(dquot->dq_sb, "Can't remove block (%u) " in find_free_dqentry()
313 quota_error(dquot->dq_sb, "Data block full but it shouldn't"); in find_free_dqentry()
320 quota_error(dquot->dq_sb, "Can't write quota data block %u", in find_free_dqentry()
324 dquot->dq_off = ((loff_t)blk << info->dqi_blocksize_bits) + in find_free_dqentry()
335 static int do_insert_tree(struct qtree_mem_dqinfo *info, struct dquot *dquot, in do_insert_tree() argument
352 quota_error(dquot->dq_sb, in do_insert_tree()
364 quota_error(dquot->dq_sb, "Can't read tree quota " in do_insert_tree()
370 newblk = le32_to_cpu(ref[get_index(info, dquot->dq_id, depth)]); in do_insert_tree()
[all …]
Dquota_v2.c25 static void v2r0_mem2diskdqb(void *dp, struct dquot *dquot);
26 static void v2r0_disk2memdqb(struct dquot *dquot, void *dp);
27 static int v2r0_is_id(void *dp, struct dquot *dquot);
28 static void v2r1_mem2diskdqb(void *dp, struct dquot *dquot);
29 static void v2r1_disk2memdqb(struct dquot *dquot, void *dp);
30 static int v2r1_is_id(void *dp, struct dquot *dquot);
229 static void v2r0_disk2memdqb(struct dquot *dquot, void *dp) in v2r0_disk2memdqb() argument
232 struct mem_dqblk *m = &dquot->dq_dqb; in v2r0_disk2memdqb()
249 static void v2r0_mem2diskdqb(void *dp, struct dquot *dquot) in v2r0_mem2diskdqb() argument
252 struct mem_dqblk *m = &dquot->dq_dqb; in v2r0_mem2diskdqb()
[all …]
Dquota_v1.c56 static int v1_read_dqblk(struct dquot *dquot) in v1_read_dqblk() argument
58 int type = dquot->dq_id.type; in v1_read_dqblk()
60 struct quota_info *dqopt = sb_dqopt(dquot->dq_sb); in v1_read_dqblk()
67 dquot->dq_sb->s_op->quota_read(dquot->dq_sb, type, (char *)&dqblk, in v1_read_dqblk()
69 v1_dqoff(from_kqid(&init_user_ns, dquot->dq_id))); in v1_read_dqblk()
71 v1_disk2mem_dqblk(&dquot->dq_dqb, &dqblk); in v1_read_dqblk()
72 if (dquot->dq_dqb.dqb_bhardlimit == 0 && in v1_read_dqblk()
73 dquot->dq_dqb.dqb_bsoftlimit == 0 && in v1_read_dqblk()
74 dquot->dq_dqb.dqb_ihardlimit == 0 && in v1_read_dqblk()
75 dquot->dq_dqb.dqb_isoftlimit == 0) in v1_read_dqblk()
[all …]
DMakefile2 obj-$(CONFIG_QUOTA) += dquot.o
/linux-6.12.1/fs/ocfs2/
Dquota_global.c71 static void ocfs2_global_disk2memdqb(struct dquot *dquot, void *dp) in ocfs2_global_disk2memdqb() argument
74 struct mem_dqblk *m = &dquot->dq_dqb; in ocfs2_global_disk2memdqb()
77 if (!test_bit(DQ_LASTSET_B + QIF_ILIMITS_B, &dquot->dq_flags)) { in ocfs2_global_disk2memdqb()
81 if (!test_bit(DQ_LASTSET_B + QIF_INODES_B, &dquot->dq_flags)) in ocfs2_global_disk2memdqb()
83 if (!test_bit(DQ_LASTSET_B + QIF_BLIMITS_B, &dquot->dq_flags)) { in ocfs2_global_disk2memdqb()
87 if (!test_bit(DQ_LASTSET_B + QIF_SPACE_B, &dquot->dq_flags)) in ocfs2_global_disk2memdqb()
89 if (!test_bit(DQ_LASTSET_B + QIF_BTIME_B, &dquot->dq_flags)) in ocfs2_global_disk2memdqb()
91 if (!test_bit(DQ_LASTSET_B + QIF_ITIME_B, &dquot->dq_flags)) in ocfs2_global_disk2memdqb()
93 OCFS2_DQUOT(dquot)->dq_use_count = le32_to_cpu(d->dqb_use_count); in ocfs2_global_disk2memdqb()
96 static void ocfs2_global_mem2diskdqb(void *dp, struct dquot *dquot) in ocfs2_global_mem2diskdqb() argument
[all …]
Dquota.h28 struct dquot dq_dquot; /* Generic VFS dquot */
72 static inline struct ocfs2_dquot *OCFS2_DQUOT(struct dquot *dquot) in OCFS2_DQUOT() argument
74 return container_of(dquot, struct ocfs2_dquot, dq_dquot); in OCFS2_DQUOT()
100 int ocfs2_global_read_dquot(struct dquot *dquot);
101 int __ocfs2_sync_dquot(struct dquot *dquot, int freeing);
102 static inline int ocfs2_sync_dquot(struct dquot *dquot) in ocfs2_sync_dquot() argument
104 return __ocfs2_sync_dquot(dquot, 0); in ocfs2_sync_dquot()
106 static inline int ocfs2_global_release_dquot(struct dquot *dquot) in ocfs2_global_release_dquot() argument
108 return __ocfs2_sync_dquot(dquot, 1); in ocfs2_global_release_dquot()
116 int ocfs2_create_local_dquot(struct dquot *dquot);
[all …]
Dquota_local.c466 struct dquot *dquot; in ocfs2_recover_local_quota_file() local
499 dquot = dqget(sb, in ocfs2_recover_local_quota_file()
502 if (IS_ERR(dquot)) { in ocfs2_recover_local_quota_file()
503 status = PTR_ERR(dquot); in ocfs2_recover_local_quota_file()
526 spin_lock(&dquot->dq_dqb_lock); in ocfs2_recover_local_quota_file()
532 dquot->dq_dqb.dqb_curspace += spacechange; in ocfs2_recover_local_quota_file()
533 dquot->dq_dqb.dqb_curinodes += inodechange; in ocfs2_recover_local_quota_file()
534 spin_unlock(&dquot->dq_dqb_lock); in ocfs2_recover_local_quota_file()
538 status = ocfs2_global_release_dquot(dquot); in ocfs2_recover_local_quota_file()
564 dqput(dquot); in ocfs2_recover_local_quota_file()
[all …]
Dinode.h68 struct dquot __rcu *i_dquot[MAXQUOTAS];
/linux-6.12.1/mm/
Dshmem_quota.c164 static int shmem_acquire_dquot(struct dquot *dquot) in shmem_acquire_dquot() argument
166 struct mem_dqinfo *info = sb_dqinfo(dquot->dq_sb, dquot->dq_id.type); in shmem_acquire_dquot()
168 struct shmem_sb_info *sbinfo = dquot->dq_sb->s_fs_info; in shmem_acquire_dquot()
171 qid_t id = from_kqid(&init_user_ns, dquot->dq_id); in shmem_acquire_dquot()
172 struct quota_info *dqopt = sb_dqopt(dquot->dq_sb); in shmem_acquire_dquot()
175 mutex_lock(&dquot->dq_lock); in shmem_acquire_dquot()
200 if (dquot->dq_id.type == USRQUOTA) { in shmem_acquire_dquot()
203 } else if (dquot->dq_id.type == GRPQUOTA) { in shmem_acquire_dquot()
215 spin_lock(&dquot->dq_dqb_lock); in shmem_acquire_dquot()
216 dquot->dq_dqb.dqb_bhardlimit = entry->bhardlimit; in shmem_acquire_dquot()
[all …]
/linux-6.12.1/include/linux/
Ddqblk_qtree.h18 struct dquot;
23 …void (*mem2disk_dqblk)(void *disk, struct dquot *dquot); /* Convert given entry from in memory for…
24 …void (*disk2mem_dqblk)(struct dquot *dquot, void *disk); /* Convert given entry from disk format t…
25 int (*is_id)(void *disk, struct dquot *dquot); /* Is this structure for given id? */
42 int qtree_write_dquot(struct qtree_mem_dqinfo *info, struct dquot *dquot);
43 int qtree_read_dquot(struct qtree_mem_dqinfo *info, struct dquot *dquot);
44 int qtree_delete_dquot(struct qtree_mem_dqinfo *info, struct dquot *dquot);
45 int qtree_release_dquot(struct qtree_mem_dqinfo *info, struct dquot *dquot);
Dquotaops.h46 struct dquot *dqget(struct super_block *sb, struct kqid qid);
47 static inline struct dquot *dqgrab(struct dquot *dquot) in dqgrab() argument
50 WARN_ON_ONCE(!atomic_read(&dquot->dq_count)); in dqgrab()
51 WARN_ON_ONCE(!test_bit(DQ_ACTIVE_B, &dquot->dq_flags)); in dqgrab()
52 atomic_inc(&dquot->dq_count); in dqgrab()
53 return dquot; in dqgrab()
56 static inline bool dquot_is_busy(struct dquot *dquot) in dquot_is_busy() argument
58 if (test_bit(DQ_MOD_B, &dquot->dq_flags)) in dquot_is_busy()
60 if (atomic_read(&dquot->dq_count) > 0) in dquot_is_busy()
65 void dqput(struct dquot *dquot);
[all …]
Dquota.h296 struct dquot { struct
317 int (*read_dqblk)(struct dquot *dquot); /* Read structure for one user */ argument
318 int (*commit_dqblk)(struct dquot *dquot); /* Write structure for one user */
319 …int (*release_dqblk)(struct dquot *dquot); /* Called when last reference to dquot is being dropped…
325 int (*write_dquot) (struct dquot *); /* Ordinary dquot write */
326 struct dquot *(*alloc_dquot)(struct super_block *, int); /* Allocate memory for new dquot */
327 void (*destroy_dquot)(struct dquot *); /* Free memory for dquot */
328 int (*acquire_dquot) (struct dquot *); /* Quota is going to be created on disk */
329 int (*release_dquot) (struct dquot *); /* Quota is going to be deleted from disk */
330 int (*mark_dirty) (struct dquot *); /* Dquot is marked dirty */
Dshmem_fs.h40 struct dquot __rcu *i_dquot[MAXQUOTAS];
/linux-6.12.1/fs/reiserfs/
Dsuper.c804 static struct dquot __rcu **reiserfs_get_dquots(struct inode *inode) in reiserfs_get_dquots()
833 static int reiserfs_write_dquot(struct dquot *);
834 static int reiserfs_acquire_dquot(struct dquot *);
835 static int reiserfs_release_dquot(struct dquot *);
836 static int reiserfs_mark_dquot_dirty(struct dquot *);
2267 static int reiserfs_write_dquot(struct dquot *dquot) in reiserfs_write_dquot() argument
2273 reiserfs_write_lock(dquot->dq_sb); in reiserfs_write_dquot()
2275 journal_begin(&th, dquot->dq_sb, in reiserfs_write_dquot()
2276 REISERFS_QUOTA_TRANS_BLOCKS(dquot->dq_sb)); in reiserfs_write_dquot()
2279 depth = reiserfs_write_unlock_nested(dquot->dq_sb); in reiserfs_write_dquot()
[all …]
/linux-6.12.1/fs/ext4/
Dsuper.c1577 static int ext4_write_dquot(struct dquot *dquot);
1578 static int ext4_acquire_dquot(struct dquot *dquot);
1579 static int ext4_release_dquot(struct dquot *dquot);
1580 static int ext4_mark_dquot_dirty(struct dquot *dquot);
1591 static struct dquot __rcu **ext4_get_dquots(struct inode *inode) in ext4_get_dquots()
6758 struct dquot *dquot; in ext4_statfs_project() local
6763 dquot = dqget(sb, qid); in ext4_statfs_project()
6764 if (IS_ERR(dquot)) in ext4_statfs_project()
6765 return PTR_ERR(dquot); in ext4_statfs_project()
6766 spin_lock(&dquot->dq_dqb_lock); in ext4_statfs_project()
[all …]
Dioctl.c721 struct dquot *transfer_to[MAXQUOTAS] = { }; in ext4_ioctl_setproject()
/linux-6.12.1/fs/f2fs/
Dsuper.c1750 struct dquot *dquot; in f2fs_statfs_project() local
1755 dquot = dqget(sb, qid); in f2fs_statfs_project()
1756 if (IS_ERR(dquot)) in f2fs_statfs_project()
1757 return PTR_ERR(dquot); in f2fs_statfs_project()
1758 spin_lock(&dquot->dq_dqb_lock); in f2fs_statfs_project()
1760 limit = min_not_zero(dquot->dq_dqb.dqb_bsoftlimit, in f2fs_statfs_project()
1761 dquot->dq_dqb.dqb_bhardlimit); in f2fs_statfs_project()
1766 curblock = (dquot->dq_dqb.dqb_curspace + in f2fs_statfs_project()
1767 dquot->dq_dqb.dqb_rsvspace) >> sb->s_blocksize_bits; in f2fs_statfs_project()
1774 limit = min_not_zero(dquot->dq_dqb.dqb_isoftlimit, in f2fs_statfs_project()
[all …]
/linux-6.12.1/fs/jfs/
Djfs_incore.h95 struct dquot __rcu *i_dquot[MAXQUOTAS];
Dsuper.c827 static struct dquot __rcu **jfs_get_dquots(struct inode *inode) in jfs_get_dquots()
/linux-6.12.1/Documentation/filesystems/
Dlocking.rst610 int (*write_dquot) (struct dquot *);
611 int (*acquire_dquot) (struct dquot *);
612 int (*release_dquot) (struct dquot *);
613 int (*mark_dirty) (struct dquot *);
634 More details about quota locking can be found in fs/dquot.c.
/linux-6.12.1/fs/bcachefs/
Dquota.c145 struct mem_dqinfo *info = &sb_dqopt(dquot->dq_sb)->info[dquot->dq_id.type]; in ignore_hardlimit()
/linux-6.12.1/fs/ext2/
Dext2.h677 struct dquot __rcu *i_dquot[MAXQUOTAS];
Dsuper.c322 static struct dquot __rcu **ext2_get_dquots(struct inode *inode) in ext2_get_dquots()
/linux-6.12.1/Documentation/filesystems/xfs/
Dxfs-online-fsck-design.rst552 and commit those changes to a dquot side file when the transaction commits.
3339 8. Incore dquot references, if a file is being repaired.
3617 Add each file's resource usage to the incore dquot.
3619 3. Walk each incore dquot.
3620 If the incore dquot is not being flushed, add the ondisk buffer backing the
3621 incore dquot to a delayed write (delwri) list.
3628 Therefore, online quotacheck records file resource usage to a shadow dquot
3636 2. For each dquot attached to the file:
3638 a. The dquot is locked.
3640 b. A quota reservation is added to the dquot's resource usage.
[all …]

12