do not forget to unlock resources (from Torek)
authorKirk McKusick <mckusick@ucbvax.Berkeley.EDU>
Fri, 9 Nov 1990 13:56:42 +0000 (05:56 -0800)
committerKirk McKusick <mckusick@ucbvax.Berkeley.EDU>
Fri, 9 Nov 1990 13:56:42 +0000 (05:56 -0800)
SCCS-vsn: sys/ufs/ffs/ufs_quota.c 7.6
SCCS-vsn: sys/ufs/ufs/ufs_quota.c 7.6

usr/src/sys/ufs/ffs/ufs_quota.c
usr/src/sys/ufs/ufs/ufs_quota.c

index 813aae5..074ef60 100644 (file)
@@ -7,7 +7,7 @@
  *
  * %sccs.include.redist.c%
  *
  *
  * %sccs.include.redist.c%
  *
- *     @(#)ufs_quota.c 7.5 (Berkeley) %G%
+ *     @(#)ufs_quota.c 7.6 (Berkeley) %G%
  */
 #include "param.h"
 #include "time.h"
  */
 #include "param.h"
 #include "time.h"
@@ -837,8 +837,11 @@ dqsync(vp, dq)
        while (dq->dq_flags & DQ_LOCK) {
                dq->dq_flags |= DQ_WANT;
                sleep((caddr_t)dq, PINOD+2);
        while (dq->dq_flags & DQ_LOCK) {
                dq->dq_flags |= DQ_WANT;
                sleep((caddr_t)dq, PINOD+2);
-               if ((dq->dq_flags & DQ_MOD) == 0)
+               if ((dq->dq_flags & DQ_MOD) == 0) {
+                       if (vp != dqvp)
+                               VOP_UNLOCK(dqvp);
                        return (0);
                        return (0);
+               }
        }
        dq->dq_flags |= DQ_LOCK;
        auio.uio_iov = &aiov;
        }
        dq->dq_flags |= DQ_LOCK;
        auio.uio_iov = &aiov;
index 813aae5..074ef60 100644 (file)
@@ -7,7 +7,7 @@
  *
  * %sccs.include.redist.c%
  *
  *
  * %sccs.include.redist.c%
  *
- *     @(#)ufs_quota.c 7.5 (Berkeley) %G%
+ *     @(#)ufs_quota.c 7.6 (Berkeley) %G%
  */
 #include "param.h"
 #include "time.h"
  */
 #include "param.h"
 #include "time.h"
@@ -837,8 +837,11 @@ dqsync(vp, dq)
        while (dq->dq_flags & DQ_LOCK) {
                dq->dq_flags |= DQ_WANT;
                sleep((caddr_t)dq, PINOD+2);
        while (dq->dq_flags & DQ_LOCK) {
                dq->dq_flags |= DQ_WANT;
                sleep((caddr_t)dq, PINOD+2);
-               if ((dq->dq_flags & DQ_MOD) == 0)
+               if ((dq->dq_flags & DQ_MOD) == 0) {
+                       if (vp != dqvp)
+                               VOP_UNLOCK(dqvp);
                        return (0);
                        return (0);
+               }
        }
        dq->dq_flags |= DQ_LOCK;
        auio.uio_iov = &aiov;
        }
        dq->dq_flags |= DQ_LOCK;
        auio.uio_iov = &aiov;