have to restore quota state after chown
authorKirk McKusick <mckusick@ucbvax.Berkeley.EDU>
Wed, 30 May 1990 09:31:10 +0000 (01:31 -0800)
committerKirk McKusick <mckusick@ucbvax.Berkeley.EDU>
Wed, 30 May 1990 09:31:10 +0000 (01:31 -0800)
SCCS-vsn: sys/ufs/ffs/ffs_vnops.c 7.41
SCCS-vsn: sys/ufs/ffs/ufs_vnops.c 7.41
SCCS-vsn: sys/ufs/lfs/lfs_vnops.c 7.41
SCCS-vsn: sys/ufs/ufs/ufs_vnops.c 7.41

usr/src/sys/ufs/ffs/ffs_vnops.c
usr/src/sys/ufs/ffs/ufs_vnops.c
usr/src/sys/ufs/lfs/lfs_vnops.c
usr/src/sys/ufs/ufs/ufs_vnops.c

index f9b6612..c39924d 100644 (file)
@@ -14,7 +14,7 @@
  * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  *
  * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  *
- *     @(#)ffs_vnops.c 7.40 (Berkeley) %G%
+ *     @(#)ffs_vnops.c 7.41 (Berkeley) %G%
  */
 
 #include "param.h"
  */
 
 #include "param.h"
@@ -574,11 +574,13 @@ chown1(vp, uid, gid, cred)
                }
                (void) chkdq(ip, change, cred, FORCE|CHOWN);
                (void) chkiq(ip, 1, cred, FORCE|CHOWN);
                }
                (void) chkdq(ip, change, cred, FORCE|CHOWN);
                (void) chkiq(ip, 1, cred, FORCE|CHOWN);
+               (void) getinoquota(ip);
        }
        }
-       if (error)
-               return (error);
+       return (error);
 good:
 good:
-#endif
+       if (getinoquota(ip))
+               panic("chown: lost quota");
+#endif /* QUOTA */
        if (ouid != uid || ogid != gid)
                ip->i_flag |= ICHG;
        if (ouid != uid && cred->cr_uid != 0)
        if (ouid != uid || ogid != gid)
                ip->i_flag |= ICHG;
        if (ouid != uid && cred->cr_uid != 0)
index 3c77c18..d70847a 100644 (file)
@@ -14,7 +14,7 @@
  * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  *
  * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  *
- *     @(#)ufs_vnops.c 7.40 (Berkeley) %G%
+ *     @(#)ufs_vnops.c 7.41 (Berkeley) %G%
  */
 
 #include "param.h"
  */
 
 #include "param.h"
@@ -574,11 +574,13 @@ chown1(vp, uid, gid, cred)
                }
                (void) chkdq(ip, change, cred, FORCE|CHOWN);
                (void) chkiq(ip, 1, cred, FORCE|CHOWN);
                }
                (void) chkdq(ip, change, cred, FORCE|CHOWN);
                (void) chkiq(ip, 1, cred, FORCE|CHOWN);
+               (void) getinoquota(ip);
        }
        }
-       if (error)
-               return (error);
+       return (error);
 good:
 good:
-#endif
+       if (getinoquota(ip))
+               panic("chown: lost quota");
+#endif /* QUOTA */
        if (ouid != uid || ogid != gid)
                ip->i_flag |= ICHG;
        if (ouid != uid && cred->cr_uid != 0)
        if (ouid != uid || ogid != gid)
                ip->i_flag |= ICHG;
        if (ouid != uid && cred->cr_uid != 0)
index 503ab15..8b88f3a 100644 (file)
@@ -14,7 +14,7 @@
  * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  *
  * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  *
- *     @(#)lfs_vnops.c 7.40 (Berkeley) %G%
+ *     @(#)lfs_vnops.c 7.41 (Berkeley) %G%
  */
 
 #include "param.h"
  */
 
 #include "param.h"
@@ -574,11 +574,13 @@ chown1(vp, uid, gid, cred)
                }
                (void) chkdq(ip, change, cred, FORCE|CHOWN);
                (void) chkiq(ip, 1, cred, FORCE|CHOWN);
                }
                (void) chkdq(ip, change, cred, FORCE|CHOWN);
                (void) chkiq(ip, 1, cred, FORCE|CHOWN);
+               (void) getinoquota(ip);
        }
        }
-       if (error)
-               return (error);
+       return (error);
 good:
 good:
-#endif
+       if (getinoquota(ip))
+               panic("chown: lost quota");
+#endif /* QUOTA */
        if (ouid != uid || ogid != gid)
                ip->i_flag |= ICHG;
        if (ouid != uid && cred->cr_uid != 0)
        if (ouid != uid || ogid != gid)
                ip->i_flag |= ICHG;
        if (ouid != uid && cred->cr_uid != 0)
index 3c77c18..d70847a 100644 (file)
@@ -14,7 +14,7 @@
  * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  *
  * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  *
- *     @(#)ufs_vnops.c 7.40 (Berkeley) %G%
+ *     @(#)ufs_vnops.c 7.41 (Berkeley) %G%
  */
 
 #include "param.h"
  */
 
 #include "param.h"
@@ -574,11 +574,13 @@ chown1(vp, uid, gid, cred)
                }
                (void) chkdq(ip, change, cred, FORCE|CHOWN);
                (void) chkiq(ip, 1, cred, FORCE|CHOWN);
                }
                (void) chkdq(ip, change, cred, FORCE|CHOWN);
                (void) chkiq(ip, 1, cred, FORCE|CHOWN);
+               (void) getinoquota(ip);
        }
        }
-       if (error)
-               return (error);
+       return (error);
 good:
 good:
-#endif
+       if (getinoquota(ip))
+               panic("chown: lost quota");
+#endif /* QUOTA */
        if (ouid != uid || ogid != gid)
                ip->i_flag |= ICHG;
        if (ouid != uid && cred->cr_uid != 0)
        if (ouid != uid || ogid != gid)
                ip->i_flag |= ICHG;
        if (ouid != uid && cred->cr_uid != 0)