Lines Matching refs:dqp
125 register struct dquot *dqp; in qtinit2() local
143 for (dqp = dquot; dqp < dquotNDQUOT; dqp++) { in qtinit2()
144 mutex_init(&dqp->dq_lock, NULL, MUTEX_DEFAULT, NULL); in qtinit2()
145 dqp->dq_forw = dqp->dq_back = dqp; in qtinit2()
146 dqinsheadfree(dqp); in qtinit2()
161 struct dquot *dqp; in getdiskquota() local
186 for (dqp = dhp->dqh_forw; dqp != (DQptr)dhp; dqp = dqp->dq_forw) { in getdiskquota()
187 if (dqp->dq_uid != uid || dqp->dq_ufsvfsp != ufsvfsp) in getdiskquota()
190 mutex_enter(&dqp->dq_lock); in getdiskquota()
195 if (dqp->dq_uid != uid || dqp->dq_ufsvfsp != ufsvfsp) { in getdiskquota()
196 mutex_exit(&dqp->dq_lock); in getdiskquota()
199 if (dqp->dq_flags & DQ_ERROR) { in getdiskquota()
200 mutex_exit(&dqp->dq_lock); in getdiskquota()
207 if (dqp->dq_cnt == 0) { in getdiskquota()
209 dqremfree(dqp); in getdiskquota()
212 dqp->dq_cnt++; in getdiskquota()
213 mutex_exit(&dqp->dq_lock); in getdiskquota()
214 *dqpp = dqp; in getdiskquota()
222 if ((dqp = dqfreelist.dq_freef) == &dqfreelist) { in getdiskquota()
229 if (dqp->dq_cnt != 0 || dqp->dq_flags != 0) { in getdiskquota()
232 dqp->dq_cnt, dqp->dq_flags, qip->i_fs->fs_fsmnt); in getdiskquota()
239 dqremfree(dqp); in getdiskquota()
241 remque(dqp); in getdiskquota()
242 dqp->dq_cnt = 1; in getdiskquota()
243 dqp->dq_uid = uid; in getdiskquota()
244 dqp->dq_ufsvfsp = ufsvfsp; in getdiskquota()
245 dqp->dq_mof = UFS_HOLE; in getdiskquota()
246 mutex_enter(&dqp->dq_lock); in getdiskquota()
247 insque(dqp, dhp); in getdiskquota()
262 error = ufs_rdwri(UIO_READ, FREAD, qip, (caddr_t)&dqp->dq_dqb, in getdiskquota()
272 dqp->dq_mof = ldbtob(bn) + in getdiskquota()
275 dqp->dq_mof = UFS_HOLE; in getdiskquota()
284 dqp->dq_flags = DQ_ERROR; in getdiskquota()
291 mutex_exit(&dqp->dq_lock); in getdiskquota()
293 mutex_enter(&dqp->dq_lock); in getdiskquota()
294 remque(dqp); in getdiskquota()
295 mutex_exit(&dqp->dq_lock); in getdiskquota()
302 dqp->dq_cnt = 0; in getdiskquota()
303 dqp->dq_ufsvfsp = NULL; in getdiskquota()
304 dqp->dq_forw = dqp; in getdiskquota()
305 dqp->dq_back = dqp; in getdiskquota()
306 dqp->dq_mof = UFS_HOLE; in getdiskquota()
307 dqp->dq_flags = 0; in getdiskquota()
308 dqinsheadfree(dqp); in getdiskquota()
313 bzero(&dqp->dq_dqb, sizeof (struct dqblk)); in getdiskquota()
314 dqp->dq_mof = UFS_HOLE; in getdiskquota()
316 mutex_exit(&dqp->dq_lock); in getdiskquota()
317 *dqpp = dqp; in getdiskquota()
325 dqput(dqp) in dqput() argument
326 register struct dquot *dqp; in dqput()
329 ASSERT(dqp->dq_ufsvfsp == NULL ||
330 RW_LOCK_HELD(&dqp->dq_ufsvfsp->vfs_dqrwlock));
331 ASSERT(MUTEX_HELD(&dqp->dq_lock));
332 if (dqp->dq_cnt == 0) {
334 dqp->dq_ufsvfsp && dqp->dq_ufsvfsp->vfs_root?
335 dqp->dq_ufsvfsp->vfs_root: NULL,
339 if (--dqp->dq_cnt == 0) {
340 if (dqp->dq_flags & DQ_MOD)
341 dqupdate(dqp);
347 dqp->dq_flags = 0;
348 if (dqp->dq_ufsvfsp == NULL ||
349 dqp->dq_ufsvfsp->vfs_qflags == 0) {
351 dqinval(dqp);
353 dqinstailfree(dqp);
361 dqupdate(dqp) in dqupdate() argument
362 register struct dquot *dqp; in dqupdate()
370 ASSERT(MUTEX_HELD(&dqp->dq_lock));
372 if (!dqp->dq_ufsvfsp) {
376 vfs_root = dqp->dq_ufsvfsp->vfs_root;
388 qip = dqp->dq_ufsvfsp->vfs_qinod;
399 if (ufsvfsp != dqp->dq_ufsvfsp) {
404 if (!(dqp->dq_flags & DQ_MOD)) {
416 TRANS_DELTA(ufsvfsp, dqp->dq_mof, sizeof (struct dqblk),
418 TRANS_LOG(ufsvfsp, (caddr_t)&dqp->dq_dqb, dqp->dq_mof,
430 if (dqoff(dqp->dq_uid) >= 0) {
432 (caddr_t)&dqp->dq_dqb,
434 dqoff(dqp->dq_uid), UIO_SYSSPACE,
440 dqp->dq_flags &= ~DQ_MOD;
458 dqinval(dqp) in dqinval() argument
459 register struct dquot *dqp; in dqinval()
461 ASSERT(MUTEX_HELD(&dqp->dq_lock));
462 ASSERT(dqp->dq_cnt == 0);
463 ASSERT(dqp->dq_flags == 0);
464 ASSERT(dqp->dq_freef == NULL && dqp->dq_freeb == NULL);
465 ASSERT(dqp->dq_ufsvfsp &&
466 (dqp->dq_ufsvfsp->vfs_qflags & MQ_ENABLED) == 0);
474 dqp->dq_ufsvfsp = NULL;
475 mutex_exit(&dqp->dq_lock);
477 mutex_enter(&dqp->dq_lock);
483 ASSERT(dqp->dq_cnt == 0);
484 ASSERT(dqp->dq_flags == 0);
485 ASSERT(dqp->dq_freef == NULL && dqp->dq_freeb == NULL);
486 ASSERT(dqp->dq_ufsvfsp == NULL);
492 remque(dqp);
494 dqp->dq_forw = dqp;
495 dqp->dq_back = dqp;
496 dqinsheadfree(dqp);
506 register struct dquot *dqp; local
528 for (dqp = dquot; dqp < dquotNDQUOT; dqp++) {
541 if (!mutex_tryenter(&dqp->dq_lock)) {
562 if (dqp->dq_ufsvfsp == ufsvfsp) {
563 ASSERT(dqp->dq_cnt == 0 || (dqp->dq_cnt == 1 &&
564 (dqp->dq_flags & DQ_TRANS)));
567 if (dqp->dq_cnt == 1 && (dqp->dq_flags & DQ_TRANS)) {
568 mutex_exit(&dqp->dq_lock);
572 ASSERT(dqp->dq_cnt == 0);
573 ASSERT(dqp->dq_freef && dqp->dq_freeb);
581 dqremfree(dqp);
583 dqinval(dqp);
586 mutex_exit(&dqp->dq_lock);