Lines Matching refs:dquot

3  * In memory quota format relies on quota infrastructure to store dquot
5 * with persistent storage can load quota information into dquot from the
6 * storage on-demand and hence quota dquot shrinker can free any dquot
162 * Load dquot with limits from existing entry, or create the new entry if
165 static int shmem_acquire_dquot(struct dquot *dquot)
167 struct mem_dqinfo *info = sb_dqinfo(dquot->dq_sb, dquot->dq_id.type);
169 struct shmem_sb_info *sbinfo = dquot->dq_sb->s_fs_info;
172 qid_t id = from_kqid(&init_user_ns, dquot->dq_id);
173 struct quota_info *dqopt = sb_dqopt(dquot->dq_sb);
176 mutex_lock(&dquot->dq_lock);
199 if (dquot->dq_id.type == USRQUOTA) {
202 } else if (dquot->dq_id.type == GRPQUOTA) {
214 spin_lock(&dquot->dq_dqb_lock);
215 dquot->dq_dqb.dqb_bhardlimit = entry->bhardlimit;
216 dquot->dq_dqb.dqb_bsoftlimit = entry->bsoftlimit;
217 dquot->dq_dqb.dqb_ihardlimit = entry->ihardlimit;
218 dquot->dq_dqb.dqb_isoftlimit = entry->isoftlimit;
220 if (!dquot->dq_dqb.dqb_bhardlimit &&
221 !dquot->dq_dqb.dqb_bsoftlimit &&
222 !dquot->dq_dqb.dqb_ihardlimit &&
223 !dquot->dq_dqb.dqb_isoftlimit)
224 set_bit(DQ_FAKE_B, &dquot->dq_flags);
225 spin_unlock(&dquot->dq_dqb_lock);
227 /* Make sure flags update is visible after dquot has been filled */
229 set_bit(DQ_ACTIVE_B, &dquot->dq_flags);
232 mutex_unlock(&dquot->dq_lock);
236 static bool shmem_is_empty_dquot(struct dquot *dquot)
238 struct shmem_sb_info *sbinfo = dquot->dq_sb->s_fs_info;
242 if (dquot->dq_id.type == USRQUOTA) {
245 } else if (dquot->dq_id.type == GRPQUOTA) {
250 if (test_bit(DQ_FAKE_B, &dquot->dq_flags) ||
251 (dquot->dq_dqb.dqb_curspace == 0 &&
252 dquot->dq_dqb.dqb_curinodes == 0 &&
253 dquot->dq_dqb.dqb_bhardlimit == bhardlimit &&
254 dquot->dq_dqb.dqb_ihardlimit == ihardlimit))
260 * Store limits from dquot in the tree unless it's fake. If it is fake
264 static int shmem_release_dquot(struct dquot *dquot)
266 struct mem_dqinfo *info = sb_dqinfo(dquot->dq_sb, dquot->dq_id.type);
268 qid_t id = from_kqid(&init_user_ns, dquot->dq_id);
269 struct quota_info *dqopt = sb_dqopt(dquot->dq_sb);
272 mutex_lock(&dquot->dq_lock);
274 if (dquot_is_busy(dquot))
290 WARN_ONCE(1, "quota id %u from dquot %p, not in rb tree!\n", id, dquot);
292 mutex_unlock(&dquot->dq_lock);
296 if (shmem_is_empty_dquot(dquot)) {
302 spin_lock(&dquot->dq_dqb_lock);
303 entry->bhardlimit = dquot->dq_dqb.dqb_bhardlimit;
304 entry->bsoftlimit = dquot->dq_dqb.dqb_bsoftlimit;
305 entry->ihardlimit = dquot->dq_dqb.dqb_ihardlimit;
306 entry->isoftlimit = dquot->dq_dqb.dqb_isoftlimit;
307 spin_unlock(&dquot->dq_dqb_lock);
310 clear_bit(DQ_ACTIVE_B, &dquot->dq_flags);
314 mutex_unlock(&dquot->dq_lock);
318 static int shmem_mark_dquot_dirty(struct dquot *dquot)