brunner@bullhead.uucp (07/22/89)
Subject: File System Quotas
Index: /etc/*quot*.c IBM/4.3
Description:
There's a consistency problem with AOS 4.3BSD systems involving
Melbourne file system quota utilities which check a file system's
type. As distributed, quota utilities would exit if the mounted
file system's type was not either "4.3" or "4.2", depending on
the utility, and would always exit if the type was "ufs".
Fix:
Apply the attached patchs.
*** edquota.c Thu Jun 8 14:24:38 1989
--- edquota.c.new Thu Jun 8 14:24:11 1989
***************
*** 877,883 ****
mtab = setmntent(MOUNTED, "r");
while (mntp = getmntent(mtab)) {
! if (strcmp(mntp->mnt_type, MNTTYPE_43) != 0)
continue;
if (stat(mntp->mnt_fsname, &statb) < 0)
continue;
--- 877,885 ----
mtab = setmntent(MOUNTED, "r");
while (mntp = getmntent(mtab)) {
! if (( (strcmp(mntp->mnt_type, MNTTYPE_42) != 0) &&
! (strcmp(mntp->mnt_type, MNTTYPE_43) != 0) &&
! (strcmp(mntp->mnt_type, MNTTYPE_UFS) != 0) ))
continue;
if (stat(mntp->mnt_fsname, &statb) < 0)
continue;
*** quot.c Thu Jun 8 14:28:58 1989
--- quot.c.new Wed Jun 7 16:39:14 1989
***************
*** 190,196 ****
exit(1);
}
while (mntp = getmntent(fstab)) {
! if (strcmp(mntp->mnt_type, MNTTYPE_43) != 0)
continue;
cp = rindex(mntp->mnt_fsname, '/');
if (cp == 0)
--- 190,198 ----
exit(1);
}
while (mntp = getmntent(fstab)) {
! if (( (strcmp(mntp->mnt_type, MNTTYPE_42) != 0) &&
! (strcmp(mntp->mnt_type, MNTTYPE_43) != 0) &&
! (strcmp(mntp->mnt_type, MNTTYPE_UFS) != 0) ))
continue;
cp = rindex(mntp->mnt_fsname, '/');
if (cp == 0)
***************
*** 544,550 ****
}
while (mntp = getmntent(fstab)) {
if (strcmp(mntp->mnt_dir, *devpp) == 0) {
! if (strcmp(mntp->mnt_type, MNTTYPE_43) != 0) {
fprintf(stderr,
"%s: %s not 4.3 filesystem\n",
progname, *devpp);
--- 546,554 ----
}
while (mntp = getmntent(fstab)) {
if (strcmp(mntp->mnt_dir, *devpp) == 0) {
! if (( (strcmp(mntp->mnt_type, MNTTYPE_42) != 0) &&
! (strcmp(mntp->mnt_type, MNTTYPE_43) != 0) &&
! (strcmp(mntp->mnt_type, MNTTYPE_UFS) != 0) )) {
fprintf(stderr,
"%s: %s not 4.3 filesystem\n",
progname, *devpp);
*** quotacheck.c Thu Jun 8 14:33:14 1989
--- quotacheck.c.new Wed Jun 7 17:08:23 1989
***************
*** 599,605 ****
exit(8);
}
while (mntp = getmntent(fstab)) {
! if (strcmp(mntp->mnt_type, MNTTYPE_43) != 0 ||
!hasmntopt(mntp, MNTOPT_QUOTA) ||
hasmntopt(mntp, MNTOPT_RO))
continue;
--- 599,607 ----
exit(8);
}
while (mntp = getmntent(fstab)) {
! if (((strcmp(mntp->mnt_type, MNTTYPE_42) != 0) &&
! (strcmp(mntp->mnt_type, MNTTYPE_43) != 0) &&
! (strcmp(mntp->mnt_type, MNTTYPE_UFS) != 0)) ||
!hasmntopt(mntp, MNTOPT_QUOTA) ||
hasmntopt(mntp, MNTOPT_RO))
continue;
***************
*** 624,630 ****
exit(8);
}
while (mntp = getmntent(mtab)) {
! if (strcmp(mntp->mnt_type, MNTTYPE_43) == 0 &&
!hasmntopt(mntp, MNTOPT_RO) &&
(oneof(mntp->mnt_fsname, listp, listcnt) ||
oneof(mntp->mnt_dir, listp, listcnt)) ) {
--- 626,634 ----
exit(8);
}
while (mntp = getmntent(mtab)) {
! if (((strcmp(mntp->mnt_type, MNTTYPE_42) != 0) &&
! (strcmp(mntp->mnt_type, MNTTYPE_43) != 0) &&
! (strcmp(mntp->mnt_type, MNTTYPE_UFS) != 0)) &&
!hasmntopt(mntp, MNTOPT_RO) &&
(oneof(mntp->mnt_fsname, listp, listcnt) ||
oneof(mntp->mnt_dir, listp, listcnt)) ) {
***************
*** 673,679 ****
if (mntp->mnt_passno != passno)
continue;
! if (strcmp(mntp->mnt_type, MNTTYPE_43) != 0 ||
hasmntopt(mntp, MNTOPT_RO) ||
(!oneof(mntp->mnt_fsname, listp, listcnt) &&
!oneof(mntp->mnt_dir, listp, listcnt)))
--- 677,685 ----
if (mntp->mnt_passno != passno)
continue;
! if (((strcmp(mntp->mnt_type, MNTTYPE_42) != 0) &&
! (strcmp(mntp->mnt_type, MNTTYPE_43) != 0) &&
! (strcmp(mntp->mnt_type, MNTTYPE_UFS) != 0)) ||
hasmntopt(mntp, MNTOPT_RO) ||
(!oneof(mntp->mnt_fsname, listp, listcnt) &&
!oneof(mntp->mnt_dir, listp, listcnt)))
*** quotaon.c Thu Jun 8 14:40:53 1989
--- quotaon.c.new Thu Jun 8 14:40:14 1989
***************
*** 298,304 ****
listcnt = 0;
fstab = setmntent(MNTTAB, "r");
while (mntp = getmntent(fstab)) {
! if (strcmp(mntp->mnt_type, MNTTYPE_43) != 0 ||
!hasmntopt(mntp, MNTOPT_QUOTA) ||
hasmntopt(mntp, MNTOPT_RO))
continue;
--- 298,306 ----
listcnt = 0;
fstab = setmntent(MNTTAB, "r");
while (mntp = getmntent(fstab)) {
! if (( (strcmp(mntp->mnt_type, MNTTYPE_42) != 0) &&
! (strcmp(mntp->mnt_type, MNTTYPE_43) != 0) &&
! (strcmp(mntp->mnt_type, MNTTYPE_UFS) != 0)) ||
!hasmntopt(mntp, MNTOPT_QUOTA) ||
hasmntopt(mntp, MNTOPT_RO))
continue;
***************
*** 340,346 ****
* record before writing it.
*/
while ((mntp = getmntent(mtab)) != NULL) {
! if (strcmp(mntp->mnt_type, MNTTYPE_43) == 0 &&
!hasmntopt(mntp, MNTOPT_RO) &&
(oneof(mntp->mnt_fsname, listp, listcnt) ||
oneof(mntp->mnt_dir, listp, listcnt)) ) {
--- 342,350 ----
* record before writing it.
*/
while ((mntp = getmntent(mtab)) != NULL) {
! if (( (strcmp(mntp->mnt_type, MNTTYPE_42) != 0) &&
! (strcmp(mntp->mnt_type, MNTTYPE_43) != 0) &&
! (strcmp(mntp->mnt_type, MNTTYPE_UFS) != 0)) ||
!hasmntopt(mntp, MNTOPT_RO) &&
(oneof(mntp->mnt_fsname, listp, listcnt) ||
oneof(mntp->mnt_dir, listp, listcnt)) ) {
*** repquota.c Thu Jun 8 14:46:01 1989
--- repquota.c.new Thu Jun 8 14:45:43 1989
***************
*** 351,357 ****
exit(8);
}
while (mntp = getmntent(fstab)) {
! if (strcmp(mntp->mnt_type, MNTTYPE_42) != 0 ||
!hasmntopt(mntp, MNTOPT_QUOTA) ||
hasmntopt(mntp, MNTOPT_RO))
continue;
--- 351,359 ----
exit(8);
}
while (mntp = getmntent(fstab)) {
! if (( (strcmp(mntp->mnt_type, MNTTYPE_42) != 0) &&
! (strcmp(mntp->mnt_type, MNTTYPE_43) != 0) &&
! (strcmp(mntp->mnt_type, MNTTYPE_UFS) != 0)) ||
!hasmntopt(mntp, MNTOPT_QUOTA) ||
hasmntopt(mntp, MNTOPT_RO))
continue;
***************
*** 373,379 ****
exit(8);
}
while (mntp = getmntent(mtab)) {
! if (strcmp(mntp->mnt_type, MNTTYPE_42) == 0 &&
!hasmntopt(mntp, MNTOPT_RO) &&
(oneof(mntp->mnt_fsname, listp, listcnt) ||
oneof(mntp->mnt_dir, listp, listcnt)) ) {
--- 375,383 ----
exit(8);
}
while (mntp = getmntent(mtab)) {
! if (( (strcmp(mntp->mnt_type, MNTTYPE_42) != 0) &&
! (strcmp(mntp->mnt_type, MNTTYPE_43) != 0) &&
! (strcmp(mntp->mnt_type, MNTTYPE_UFS) != 0)) ||
!hasmntopt(mntp, MNTOPT_RO) &&
(oneof(mntp->mnt_fsname, listp, listcnt) ||
oneof(mntp->mnt_dir, listp, listcnt)) ) {
Eric Brunner
uunet!ibmsupt!brunner