From 6d2387f8082aa95496efe3460e90fad462beffc0 Mon Sep 17 00:00:00 2001 From: mar Date: Mon, 27 Mar 1989 15:44:12 +0000 Subject: [PATCH] added checking for fsgroups --- dbck/phase2.qc | 87 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 87 insertions(+) diff --git a/dbck/phase2.qc b/dbck/phase2.qc index ac36040f..ed39e720 100644 --- a/dbck/phase2.qc +++ b/dbck/phase2.qc @@ -428,6 +428,77 @@ int hint; } } +##show_fsg_missing(id) +##int id; +##{ +## int id1, found = 1; + struct filesys *f; + +## retrieve (id1 = fsgroup.filsys_id) where fsgroup.group_id = id { + found = 0; + if (f = (struct filesys *) hash_lookup(filesys, id1)) + printf("Missing fsgroup %d has member filesystem %s\n", id, f->name); + else + printf("Missing fsgroup %d has member filesystem %d\n", id, id1); +## } + return(found); +##} + +show_fsg_type(f) +struct filesys *f; +{ + char *t; + + switch (f->type) { + case 'N': + t = "NFS"; + break; + case 'R': + t = "RVD"; + break; + case 'E': + t = "ERR"; + break; + case 'F': + t = "FSGROUP"; + break; + default: + t = "???"; + } + printf("FSGroup %s has type %s instead of FSGROUP\n", f->name, t); + return(0); +} + +fix_fsg_type(f) +struct filesys *f; +##{ +## int rowcount, id = f->filsys_id; + +## replace filesys (type = "FSGROUP") where filesys.filsys_id = id +## inquire_equel(rowcount = "rowcount") + if (rowcount > 0) + printf("%d entr%s fixed\n", rowcount, rowcount==1?"y":"ies"); + else + printf("Not fixed\n"); + modified("filesys"); +##} + +##show_fsg_nomember(id) +##int id; +##{ +## int id1, found = 1; + struct filesys *f; + +## retrieve (id1 = fsgroup.group_id) where fsgroup.filsys_id = id { + found = 0; + if (f = (struct filesys *) hash_lookup(filesys, id1)) + printf("FSGroup %s has missing member %d\n", f->name, id); + else + printf("FSGroup %d has missing member %d\n", id1, id); +## } + return(found); +##} + ##show_quota_nouser(id) ##int id; ##{ @@ -648,6 +719,22 @@ phase2() dprintf("Checking filesys...\n"); hash_step(filesys, check_fs, NULL); + dprintf("Checking filesystem groups...\n"); + sq1 = sq_create(); + sq2 = sq_create(); + sq3 = sq_create(); +## retrieve (id1 = fsgroup.group_id, id2 = fsgroup.filsys_id) { + if (!(f = (struct filesys *) hash_lookup(filesys, id1))) + sq_save_data(sq1, id1); + if (f->type != 'F') + sq_save_data(sq2, f); + if (!hash_lookup(filesys, id2)) + sq_save_data(sq3, id2); +## } + generic_delete(sq1, show_fsg_missing, "fsgroup", "group_id", 0); + generic_fix(sq2, show_fsg_type, "Change to \"FSTYPE\"", fix_fsg_type, 0); + generic_delete(sq3, show_fsg_nomember, "fsgroup", "filsys_id", 1); + dprintf("Checking nfsquota...\n"); sq1 = sq_create(); sq2 = sq_create(); -- 2.45.2