Lines Matching refs:dqp
128 register struct dquot *dqp; in qtinit2() local
146 for (dqp = dquot; dqp < dquotNDQUOT; dqp++) { in qtinit2()
147 mutex_init(&dqp->dq_lock, NULL, MUTEX_DEFAULT, NULL); in qtinit2()
148 dqp->dq_forw = dqp->dq_back = dqp; in qtinit2()
149 dqinsheadfree(dqp); in qtinit2()
164 struct dquot *dqp; in getdiskquota() local
189 for (dqp = dhp->dqh_forw; dqp != (DQptr)dhp; dqp = dqp->dq_forw) { in getdiskquota()
190 if (dqp->dq_uid != uid || dqp->dq_ufsvfsp != ufsvfsp) in getdiskquota()
193 mutex_enter(&dqp->dq_lock); in getdiskquota()
198 if (dqp->dq_uid != uid || dqp->dq_ufsvfsp != ufsvfsp) { in getdiskquota()
199 mutex_exit(&dqp->dq_lock); in getdiskquota()
202 if (dqp->dq_flags & DQ_ERROR) { in getdiskquota()
203 mutex_exit(&dqp->dq_lock); in getdiskquota()
210 if (dqp->dq_cnt == 0) { in getdiskquota()
212 dqremfree(dqp); in getdiskquota()
215 dqp->dq_cnt++; in getdiskquota()
216 mutex_exit(&dqp->dq_lock); in getdiskquota()
217 *dqpp = dqp; in getdiskquota()
225 if ((dqp = dqfreelist.dq_freef) == &dqfreelist) { in getdiskquota()
232 if (dqp->dq_cnt != 0 || dqp->dq_flags != 0) { in getdiskquota()
235 dqp->dq_cnt, dqp->dq_flags, qip->i_fs->fs_fsmnt); in getdiskquota()
242 dqremfree(dqp); in getdiskquota()
244 remque(dqp); in getdiskquota()
245 dqp->dq_cnt = 1; in getdiskquota()
246 dqp->dq_uid = uid; in getdiskquota()
247 dqp->dq_ufsvfsp = ufsvfsp; in getdiskquota()
248 dqp->dq_mof = UFS_HOLE; in getdiskquota()
249 mutex_enter(&dqp->dq_lock); in getdiskquota()
250 insque(dqp, dhp); in getdiskquota()
265 error = ufs_rdwri(UIO_READ, FREAD, qip, (caddr_t)&dqp->dq_dqb, in getdiskquota()
275 dqp->dq_mof = ldbtob(bn) + in getdiskquota()
278 dqp->dq_mof = UFS_HOLE; in getdiskquota()
287 dqp->dq_flags = DQ_ERROR; in getdiskquota()
294 mutex_exit(&dqp->dq_lock); in getdiskquota()
296 mutex_enter(&dqp->dq_lock); in getdiskquota()
297 remque(dqp); in getdiskquota()
298 mutex_exit(&dqp->dq_lock); in getdiskquota()
305 dqp->dq_cnt = 0; in getdiskquota()
306 dqp->dq_ufsvfsp = NULL; in getdiskquota()
307 dqp->dq_forw = dqp; in getdiskquota()
308 dqp->dq_back = dqp; in getdiskquota()
309 dqp->dq_mof = UFS_HOLE; in getdiskquota()
310 dqp->dq_flags = 0; in getdiskquota()
311 dqinsheadfree(dqp); in getdiskquota()
316 bzero(&dqp->dq_dqb, sizeof (struct dqblk)); in getdiskquota()
317 dqp->dq_mof = UFS_HOLE; in getdiskquota()
319 mutex_exit(&dqp->dq_lock); in getdiskquota()
320 *dqpp = dqp; in getdiskquota()
328 dqput(dqp) in dqput() argument
329 register struct dquot *dqp; in dqput()
332 ASSERT(dqp->dq_ufsvfsp == NULL ||
333 RW_LOCK_HELD(&dqp->dq_ufsvfsp->vfs_dqrwlock));
334 ASSERT(MUTEX_HELD(&dqp->dq_lock));
335 if (dqp->dq_cnt == 0) {
337 dqp->dq_ufsvfsp && dqp->dq_ufsvfsp->vfs_root?
338 dqp->dq_ufsvfsp->vfs_root: NULL,
342 if (--dqp->dq_cnt == 0) {
343 if (dqp->dq_flags & DQ_MOD)
344 dqupdate(dqp);
350 dqp->dq_flags = 0;
351 if (dqp->dq_ufsvfsp == NULL ||
352 dqp->dq_ufsvfsp->vfs_qflags == 0) {
354 dqinval(dqp);
356 dqinstailfree(dqp);
364 dqupdate(dqp) in dqupdate() argument
365 register struct dquot *dqp; in dqupdate()
373 ASSERT(MUTEX_HELD(&dqp->dq_lock));
375 if (!dqp->dq_ufsvfsp) {
379 vfs_root = dqp->dq_ufsvfsp->vfs_root;
391 qip = dqp->dq_ufsvfsp->vfs_qinod;
402 if (ufsvfsp != dqp->dq_ufsvfsp) {
407 if (!(dqp->dq_flags & DQ_MOD)) {
419 TRANS_DELTA(ufsvfsp, dqp->dq_mof, sizeof (struct dqblk),
421 TRANS_LOG(ufsvfsp, (caddr_t)&dqp->dq_dqb, dqp->dq_mof,
433 if (dqoff(dqp->dq_uid) >= 0) {
435 (caddr_t)&dqp->dq_dqb,
437 dqoff(dqp->dq_uid), UIO_SYSSPACE,
443 dqp->dq_flags &= ~DQ_MOD;
461 dqinval(dqp) in dqinval() argument
462 register struct dquot *dqp; in dqinval()
464 ASSERT(MUTEX_HELD(&dqp->dq_lock));
465 ASSERT(dqp->dq_cnt == 0);
466 ASSERT(dqp->dq_flags == 0);
467 ASSERT(dqp->dq_freef == NULL && dqp->dq_freeb == NULL);
468 ASSERT(dqp->dq_ufsvfsp &&
469 (dqp->dq_ufsvfsp->vfs_qflags & MQ_ENABLED) == 0);
477 dqp->dq_ufsvfsp = NULL;
478 mutex_exit(&dqp->dq_lock);
480 mutex_enter(&dqp->dq_lock);
486 ASSERT(dqp->dq_cnt == 0);
487 ASSERT(dqp->dq_flags == 0);
488 ASSERT(dqp->dq_freef == NULL && dqp->dq_freeb == NULL);
489 ASSERT(dqp->dq_ufsvfsp == NULL);
495 remque(dqp);
497 dqp->dq_forw = dqp;
498 dqp->dq_back = dqp;
499 dqinsheadfree(dqp);
509 register struct dquot *dqp; local
531 for (dqp = dquot; dqp < dquotNDQUOT; dqp++) {
544 if (!mutex_tryenter(&dqp->dq_lock)) {
565 if (dqp->dq_ufsvfsp == ufsvfsp) {
566 ASSERT(dqp->dq_cnt == 0 || (dqp->dq_cnt == 1 &&
567 (dqp->dq_flags & DQ_TRANS)));
570 if (dqp->dq_cnt == 1 && (dqp->dq_flags & DQ_TRANS)) {
571 mutex_exit(&dqp->dq_lock);
575 ASSERT(dqp->dq_cnt == 0);
576 ASSERT(dqp->dq_freef && dqp->dq_freeb);
584 dqremfree(dqp);
586 dqinval(dqp);
589 mutex_exit(&dqp->dq_lock);